10

次のコマンドを実行すると:

ant targetname -Dk1=v1 -Dk2=v2

コマンドラインパラメータをjava、のようにに渡したいjava whatever -Dk1=v1 -Dk2=v2

System.getPropertyまたはを使用してJavaコードからこれらのパラメーターにアクセスする必要がありますSystem.getenv

これを実現するには、antビルドスクリプトに何を書き込む必要がありますか?

それとも、他のアプローチを取る必要がありますか?

4

3 に答える 3

20

これらの値をどのように渡すかは正確にはわかりませんが、いくつかのメカニズムがあります。

  • <sysproperty>設定する必要のあるシステムプロパティを渡すために使用します。
  • <arg>コマンドライン引数をJavaクラスに渡すために使用します
  • <jvmarg>Javaコマンド自体に引数を渡すために使用します
  • Javaタスクをフォークする場合は、環境変数を設定することもできます。Javaタスクをフォークしない場合、これらは無視されます

これ:

 $ foo=bar; java -Xlingc com.example.foo.bar -Dsys1=fu -Dsys2=barfu -arg1 -arg2 bar

になる:

<java classname="com.example.foo.bar"
    fork="true">
    <env key="foo" value="bar"/>
    <sysproperty key="sys1" value="fu"/>
    <sysproperty key="sys2" value="barfu"/>
    <jvmarg value="-Xlingc"/>
    <arg value="-arg1"/>
    <arg value="-arg2"/>
    <arg value="bar"/>
</java>

その例がお役に立てば幸いです

于 2013-01-09T14:42:50.517 に答える
5

Ant Scriptは良くありませんが、私は以下のようなことをします:

<target name="execute">
    <echo> Running MyClass ......... </echo>
    <java classname="pkg.MyClass" classpathref="libs">          
        <arg value="val1" /> <!-- command line args -->
        <arg value="val2" />
        <arg value="val3" />
        <env key="k1" value="v1" /> <!-- set environmental value -->
    </java>     
</target>

Eclipseを使用している場合は、ポップアップのjavaタグの下に提案が表示されます。私はもう少し好きになりました:<sysproperty/>, <syspropertyset></syspropertyset>, <jvmarg/>

于 2013-01-09T14:32:49.500 に答える
3

タスクでネストされた<arg>要素を使用します。<java>

<java classname="test.Main">
     <arg value="${k1}"/>
     <arg value="${k2}"/>
     <classpath>
       <pathelement location="dist/test.jar"/>
       <pathelement path="${java.class.path}"/>
     </classpath>
   </java>
于 2013-01-09T14:33:15.403 に答える