私のプログラムはコマンドライン引数を取得しています。 Antを使用するときにどのように渡すことができますか?
拡張 Richard Cook の答え。
プログラムを実行するant
タスクは次のとおりです(Javaプログラムを含むが、これに限定されません):
<target name="run">
<exec executable="name-of-executable">
<arg value="${arg0}"/>
<arg value="${arg1}"/>
</exec>
</target>
.jar
ファイルからJavaプログラムを実行するタスクは次のとおりです。
<target name="run-Java">
<Java jar="path for jar">
<arg value="${arg0}"/>
<arg value="${arg1}"/>
</Java>
</target>
次のようにコマンドラインから呼び出すことができます。
ant -Darg0=Hello -Darg1=World run
必ず-Darg
構文を使用してください。これを実行した場合:
ant run arg0 arg1
ant
はターゲットarg0
およびarg1
を実行しようとします。
可能な引数ごとに個別のプロパティを処理したくない場合は、以下を使用することをお勧めします。
<arg line="${args}"/>
unless
属性を持つ特定のターゲットを使用して、プロパティが設定されていないかどうかを確認できます。
<input message="Type the desired command line arguments:" addProperty="args"/>
すべてをまとめると:
<target name="run" depends="compile, input-runargs" description="run the project">
<!-- You can use exec here, depending on your needs -->
<Java classname="Main">
<arg line="${args}"/>
</Java>
</target>
<target name="input-runargs" unless="args" description="prompts for command line arguments if necessary">
<input addProperty="args" message="Type the desired command line arguments:"/>
</target>
次のように使用できます。
ant
ant run
ant run -Dargs='--help'
最初の2つのコマンドはコマンドライン引数を要求しますが、後者は要求しません。
パラメーターをビルドに渡すための唯一の効果的なメカニズムは、Javaプロパティを使用することです:
ant -Done=1 -Dtwo=2
次の例は、期待されるパラメーターがスクリプトに渡されたことを確認および確認する方法を示しています。
<project name="check" default="build">
<condition property="params.set">
<and>
<isset property="one"/>
<isset property="two"/>
</and>
</condition>
<target name="check">
<fail unless="params.set">
Must specify the parameters: one, two
</fail>
</target>
<target name="build" depends="check">
<echo>
one = ${one}
two = ${two}
</echo>
</target>
</project>
あなたがやろうとしていることと、それをやろうとしている方法についてもう少し具体的にできますか?
<exec>
タスクを使用してプログラムを呼び出そうとしている場合は、次のことを実行できます。
<exec executable="name-of-executable">
<arg value="arg0"/>
<arg value="arg1"/>
</exec>
最後に行ったのは、AntファイルからCLASSPATHを抽出するバッチファイルを作成し、これを使用してJavaを直接実行することです。
私のbuild.xmlで:
<target name="printclasspath">
<pathconvert property="classpathProp" refid="project.class.path"/>
<echo>${classpathProp}</echo>
</target>
「run.sh」という別のスクリプト:
export CLASSPATH=$(ant -q printclasspath | grep echo | cut -d \ -f 7):build
Java "$@"
クロスプラットフォームではなくなりましたが、少なくとも比較的使いやすく、run.shと同じことを行う.batファイルを提供できます。これは非常に短いバッチスクリプトです。ビルド全体をプラットフォーム固有のバッチファイルに移行するようなものではありません。
私はそれがあなたがのような何かをすることができるアリにいくつかのオプションがないのは残念だと思う:
ant -- arg1 arg2 arg3
mpirunはこのタイプの構文を使用します。 sshもこの構文を使用できます。