如何在Ant build.xml中设置env变量

时间:2014-12-30 07:42:40

标签: java ant

我想在build.xml目标

中设置一个env变量
<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>

在我的java代码中,我想使用:

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

请建议。我尝试了很多东西,但没有一个工作。也没有main()方法,因为框架是基于testng的,并且使用testNG调用测试用例。

3 个答案:

答案 0 :(得分:2)

你是如何运行程序的?如果它使用带有fork的exec,那么你可以将新环境传递给它

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

页面示例..

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

请考虑使用build.xml文件

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

和小型java程序

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

没有任何命令行:

$ ant
Buildfile: C:\build.xml

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

使用命令行中的一些参数:

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

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

答案 1 :(得分:1)

不变性:在ant中,属性是不可变的:

<property name="env.foo" value="your value goes here"/>

没有工作。

可变性:但变量是可变的,因此可行:

<variable name="env.foo" value="your value goes here"/>

修改后的代码:

<target name="run-tenantManagement" depends="jar">
    <variable name="env.SIMV3.1" value="${SIMV3.1}"/>
</target>

答案 2 :(得分:0)

是的,你可以这样做。将变量放在build.properties文件中,并在build.xml中引用它。然后你可以传递变量......但是如果你需要更好地控制多个环境配置,我认为使用 Maven Profiles 会好得多。

build.properties

var=${val};

的build.xml


 <property file="build.properties"/>     
 <property name="var" value="${val}"/>
   <target name="init">
      <echo>${var}</echo>
  </target>

CLI


 ant -Dvar=value