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