kqualters
kqualters

Reputation: 306

Ant command line arguments

Program works fine when run with eclipse run configurations, but when run with ant, it is unable to parse int from args[0], which I do not understand. Full code is available here https://gist.github.com/4108950/e984a581d5e9de889eaf0c8faf0e57752e825a97 I believe it has something to do with ant,

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

the arg value will be changed via the -D flag, as in ant -Dargs="6 testData1.txt" run.

Any help would be much appreciated, it is very frustrating.

Upvotes: 2

Views: 12845

Answers (2)

epoch
epoch

Reputation: 16615

You need to supply the arguments as two different arg values:

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

You can also use the line attribute; From the ANT docs:

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

is a single command-line argument containing a space character, not separate commands "-> l" and "-a".

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

This is a command line with two separate arguments, "-l" and "-a".

Upvotes: 8

Jayan
Jayan

Reputation: 18468

Expanding epoch 's answer.

java task supports sysproperty and jvmarg.

For example (from ant java task page)

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

So you could construct the args from the command line passed to ant.

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

Now if you call ant with ant -Dtestarg=test1234 -Darg1=6 -Darg2=in.txt, then testarg will be available via property. Others will become normal arguments to the java program.

Upvotes: 1

Related Questions