Ant命令行参数

时间:2012-11-19 04:44:26

标签: java ant

程序在使用eclipse运行配置运行时工作正常,但是当使用ant运行时,它无法从args [0]解析int,这是我不明白的。完整代码可在此处https://gist.github.com/4108950/e984a581d5e9de889eaf0c8faf0e57752e825a97 我相信这与蚂蚁有关,

target name="run" description="run the project">
   java dir="${build.dir}" classname="BinarySearchTree" fork="yes">
    <arg value="6 in.txt"/>
   /java>
/target>

arg值将通过-D标志更改,如在-Dargs =“6 testData1.txt”中运行。

任何帮助都会非常感激,非常令人沮丧。

2 个答案:

答案 0 :(得分:6)

您需要提供两个不同arg值的参数:

<target name="run" description="run the project">
   <java dir="${build.dir}" classname="BinarySearchTree" fork="yes">
       <arg value="6" />
       <arg value="in.txt" />
   </java>
</target>

您还可以使用line属性;来自ANT文档:

<arg value="-l -a"/>
  

是包含空格字符的单个命令行参数,而不是单独的命令“ - &gt; l”和“-a”。

<arg line="-l -a"/>
  

这是一个带有两个独立参数的命令行,“ - l”和“-a”。

答案 1 :(得分:1)

扩大时代的答案。

java task 支持sysproperty和jvmarg。

例如(来自ant java任务页面)

<java classname="test.Main"
    fork="yes" >
<sysproperty key="DEBUG" value="true"/>
<arg value="-h"/>
<jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/>   </java>

所以你可以从传递给ant的命令行构造args。

<target name="run" description="run the project">
   <java dir="${build.dir}" classname="BinarySearchTree" fork="yes">

      <sysproperty key="testarg"  value="${testarg}"
       <arg value="${arg1}" />
       <arg value="${arg2}" />

   </java>
</target>

现在,如果您使用ant -Dtestarg=test1234 -Darg1=6 -Darg2=in.txt调用ant,则testarg将通过属性提供。其他人将成为java程序的正常参数。