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

我想在build.xml目标中设置一个env变量

  //now here i want to do something like setenv SIMV3.1 true  

在我的java代码中,我想使用以下方法访问它:

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

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

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

  

不行。

可变性:但变量是可变的,因此这有效:

  

修改代码:

    

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

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

页面示例..

    

请考虑以下build.xml文件

            

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

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

build.properties

 var=${val}; 

build.xml文件


     ${var}  

CLI


  ant -Dvar=value