質問

今日、Apache Antファイルにタスクを追加する必要がありました。コマンドラインは次のようになっているはずです

myprogram --param1 --param2 path\somefile 2> path\logfile

これの問題は、これに次のようなものを使用すると

<exec executable="$(myprogram)"
  <arg value="--param1">
  <arg value="--param2">
  <arg path="$(somefile)">
  <arg value="2>">
  <arg path="$(logfile)">
</exec>

すべての引数が引用されているため、コマンドは次のようになりました。

myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"

ファイル/パスにスペースがある場合は特に悪くありませんが、ログファイルへのパイプを破壊します(代わりに、プログラムは2つの追加ファイル引数<!> quot; 2 <!> gt; <!> quot;および<!> quot; path \ logfile <!> quot;)。

代わりに、ファイルをパラメーターとしてのみ使用するバッチスクリプトを呼び出すことでこれを回避しましたが、このような回避策なしでこれを行うことは可能ですか?

役に立ちましたか?

解決

<!> quot; myprogram --param1 --param2 path \ somefile 2 <!> gt;を実行するとpath \ logfile <!> quot ;、プログラムへの引数は<!> quot; 2 <!> gt; <!> quot;で終わります。ファイルのリダイレクトはシェルの操作であり、Ant内からは使用されません。 ant execタスクのドキュメントを見ると、 output 属性によるリダイレクトをサポートしていること。

他のヒント

<arg line="..." />を試しましたか?

ant execタスクには、コマンドラインパイピングを必要とせずにログファイルを指定できる出力パラメーターがあり、出力ファイルを上書きするか追加するかを決定するためのパラメーターappendと組み合わせます。

トピックスターターと同じ問題がありました。 Java実行コマンドラインでは、引用符で囲まれた1つの引数としてではなく、個別の引数としてソースファイルを追加する必要がありました。 <arg value="..." />タグを使用しましたが、nullptrが示唆するように<arg line="..." />を使用して問題を解決しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top