11

On running the following command:

ant targetname -Dk1=v1 -Dk2=v2

I want the command line parameters passed down to java, like java whatever -Dk1=v1 -Dk2=v2.

I need to access these parameters from Java code with System.getProperty or System.getenv.

What do I need to write in my ant build script to make this happen?

Or should I take some other approach altogether?

2
  • You mean that from within ant, you call the Java interpreter and want to pass these options along? Commented Jan 9, 2013 at 14:26
  • @fge, I am hoping I can somehow specify in my build script that I want these parameters to be passed to java when project is run. Commented Jan 9, 2013 at 14:29

3 Answers 3

22

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

Sign up to request clarification or add additional context in comments.

Comments

5

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

Comments

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>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.