我需要从Gradle执行一个依赖于环境变量的Ant脚本。Ant使用<property environment="env"/>
。
我尝试在Gradle中执行env.foo="bar"
,但它抛出了一个Groovy异常。
将环境变量从Gradle传递到Ant的正确方法是什么?
从gradle 2.0文档中,我看到这样的东西可能是
test {
environment "LD_LIBRARY_PATH", "lib"
}
或者在这种情况下可以使用这个
systemProperty "java.library.path", "lib"
通常不可能从Gradle或JVM设置环境变量,但可以像这样欺骗Ant:
ant.project.properties['env.foo'] = 'bar'
接受@Sergey的解决方案:
ant.project.properties['env.foo'] = 'bar'
在gradle
2.9和ant
1.9.7上对我不起作用。这并没有引发任何错误,但什么也没做。事实上,如果你看代码,它实现为:
public Hashtable<String, Object> getProperties() {
return PropertyHelper.getPropertyHelper(this).getProperties();
}
其中org.apache.tools.ant.PropertyHelper#getProperties为:
public Hashtable<String, Object> getProperties() {
//avoid concurrent modification:
synchronized (properties) {
return new Hashtable<String, Object>(properties);
}
}
所以它做了明确的复制,但它不能工作。
正确操作的方法在gradle
文件中:
ant.project.setProperty('env.foo', 'bar')
文档中提到了一些其他方式(注意,没有项目):
ant.buildDir = buildDir
ant.properties.buildDir = buildDir
ant.properties['buildDir'] = buildDir
ant.property(name: 'buildDir', location: buildDir)