通过ant构建脚本将命令行参数传递给Java

mis*_*tor 7 java ant command-line-arguments

在运行以下命令时:

ant targetname -Dk1=v1 -Dk2=v2
Run Code Online (Sandbox Code Playgroud)

我希望传递给命令行参数java,比如java whatever -Dk1=v1 -Dk2=v2.

我需要使用System.getProperty或从Java代码访问这些参数System.getenv.

我需要在我的ant构建脚本中编写什么来实现这一目标?

或者我应该采取其他方法吗?

Dav*_* W. 16

我不确定你想要如何传递这些值,但有几种机制:

  • 使用<sysproperty>传给你需要设置系统属性:
  • 使用<arg>到的命令行参数传递给您的Java类
  • 使用<jvmarg>将参数传递给您的Java命令本身
  • 如果您分叉Java任务,也可以设置环境变量.如果不分叉Java任务,则会忽略这些

这个:

 $ foo=bar; java -Xlingc com.example.foo.bar -Dsys1=fu -Dsys2=barfu -arg1 -arg2 bar
Run Code Online (Sandbox Code Playgroud)

变为:

<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>
Run Code Online (Sandbox Code Playgroud)

希望这个例子有所帮助


Nan*_*ale 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>
Run Code Online (Sandbox Code Playgroud)

如果您使用 Eclipse,您将在 java 标签下的弹出窗口中获得建议。我还有几个像:<sysproperty/>, <syspropertyset></syspropertyset>, <jvmarg/>