簡體   English   中英

通過ant構建腳本將命令行參數傳遞給Java

[英]Passing command line arguments to Java via ant build script

在運行以下命令時:

ant targetname -Dk1=v1 -Dk2=v2

我希望命令行參數傳遞給java ,比如java whatever -Dk1=v1 -Dk2=v2

我需要使用System.getPropertySystem.getenv從Java代碼訪問這些參數。

我需要在我的ant構建腳本中編寫什么來實現這一目標?

或者我應該采取其他方法嗎?

我不確定你想要如何傳遞這些值,但有幾種機制:

  • 使用<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>

希望這個例子有所幫助

在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM