0

今日、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 つの追加のファイル引数 "2>" と "path\logfile" があると見なします)。

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

4

4 に答える 4

2

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

于 2009-10-21T18:28:13.537 に答える
2

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

于 2009-10-21T18:30:56.873 に答える
1

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

于 2011-04-29T09:43:55.210 に答える
1

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

于 2009-10-21T18:31:19.930 に答える