[英]Passing command line arguments to Java via ant build script
在運行以下命令時:
ant targetname -Dk1=v1 -Dk2=v2
我希望命令行參數傳遞給java
,比如java whatever -Dk1=v1 -Dk2=v2
。
我需要使用System.getProperty
或System.getenv
從Java代碼訪問這些參數。
我需要在我的ant構建腳本中編寫什么來實現這一目標?
或者我應該采取其他方法嗎?
我不確定你想要如何傳遞這些值,但有幾種機制:
<sysproperty>
傳遞您需要設置的系統屬性: <arg>
將命令行參數傳遞給Java類 <jvmarg>
將參數傳遞給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>
希望這個例子有所幫助
在Ant腳本中不是很好,但我做了類似下面的事情:
<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標簽下的popup中獲得建議。 我更喜歡: <sysproperty/>, <syspropertyset></syspropertyset>, <jvmarg/>
使用<java>
任務中的嵌套<arg>
元素:
<java classname="test.Main">
<arg value="${k1}"/>
<arg value="${k2}"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.