Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set an env variable in Ant build.xml

Tags:

java

ant

I want to set an env variable inside my build.xml target

<target name="run-tenantManagement" depends="jar">
   <property name="SIMV3.1" value="${SIMV3.1}" />
    //now here i want to do something like setenv SIMV3.1 true
</target>

and Inside my java code, I want to access it using :

if("true".equals(System.getenv("SIMV3.1")){
//do something
}

Kindly suggest. I have tried many things but none of them worked.Also, there is no main() method as the framework is testng based and test cases are invoked using testNG.

like image 767
Sammidbest Avatar asked Jan 23 '26 10:01

Sammidbest


1 Answers

How are you running your program? If it is using exec with fork, then you can pass new environment to it

https://ant.apache.org/manual/Tasks/exec.html.

Example from the page..

<exec executable="emacs">
  <env key="DISPLAY" value=":1.0"/>
</exec>

Consider following build.xml file

<?xml version="1.0"?>
<project name="MyProject" default="myjava" basedir=".">
  <target name="myjava">
    <!--default , if nothing comes from command line -->
    <property name="SIMV3.1" value="mydefaultvalue"/>

    <echo message="Value of SIMV3.1=${SIMV3.1}"/>
    <java fork="true" classname="EnvPrint">
      <env key="SIMV3.1" value="${SIMV3.1}"/>
    </java>
  </target>
</project>

and small java program

public class EnvPrint {
    public static void main(String[] args) {
        System.out.println(System.getenv("SIMV3.1"));
    }
}

With out any command line:

$ ant
Buildfile: C:\build.xml

myjava:
     [echo] Value of SIMV3.1=mydefaultvalue
     [java] mydefaultvalue

With some arguments from command line:

$ ant -DSIMV3.1=commandlineenv
Buildfile: C:\build.xml

myjava:
     [echo] Value of SIMV3.1=commandlineenv
     [java] commandlineenv
like image 154
Jayan Avatar answered Jan 25 '26 22:01

Jayan