从Gradle设置环境变量

时间:2012-01-09 13:03:07

标签: ant environment-variables gradle

我需要从Gradle和Ant脚本执行,该脚本依赖于环境变量。 Ant使用<property environment="env"/>

我尝试在Gradle中执行env.foo="bar",但它会抛出Groovy异常。

将环境变量从Gradle传递到Ant的正确方法是什么?

3 个答案:

答案 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)