从Gradle设置环境变量



我需要从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)

相关内容

  • 没有找到相关文章

最新更新