Passing command line arguments to Java via ant build script
Solution 1
I'm not sure exactly how you want to pass these values, but there are several mechanisms:
- Use
<sysproperty>
to pass system properties you need to set: - Use
<arg>
to pass command line arguments to your Java class - Use
<jvmarg>
to pass arguments to your Java command itself - If you fork your Java task, you can also set environment variables too. These are ignored if you don't fork the Java task
This:
$ foo=bar; java -Xlingc com.example.foo.bar -Dsys1=fu -Dsys2=barfu -arg1 -arg2 bar
Becomes:
<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>
Hope that example helps
Solution 2
Not good in Ant Script but I do something like below :
<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>
If you are using Eclipse, you will get suggestions in popup under java tag. I got few more like : <sysproperty/>, <syspropertyset></syspropertyset>, <jvmarg/>
Solution 3
Use the nested <arg>
elements in your <java>
task:
<java classname="test.Main">
<arg value="${k1}"/>
<arg value="${k2}"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
</java>
missingfaktor
I am no longer active on this site, but if my posts help you and/or you need further help, do let me know on Twitter at @missingfaktor. I will try my best to respond! Note: This profile description was written for StackOverflow, and was copied to all other StackExchange sites as-is.
Updated on October 31, 2020Comments
-
missingfaktor over 3 years
On running the following command:
ant targetname -Dk1=v1 -Dk2=v2
I want the command line parameters passed down to
java
, likejava whatever -Dk1=v1 -Dk2=v2
.I need to access these parameters from Java code with
System.getProperty
orSystem.getenv
.What do I need to write in my ant build script to make this happen?
Or should I take some other approach altogether?