我需要从Gradle执行依赖于环境变量的Ant脚本。 Ant为它使用<property environment="env"/>
。从Gradle设置环境变量
我试图在Gradle中做env.foo="bar"
,但它抛出了一个Groovy异常。
将环境变量从Gradle传递给Ant的正确方法是什么?
我需要从Gradle执行依赖于环境变量的Ant脚本。 Ant为它使用<property environment="env"/>
。从Gradle设置环境变量
我试图在Gradle中做env.foo="bar"
,但它抛出了一个Groovy异常。
将环境变量从Gradle传递给Ant的正确方法是什么?
这是不可能的设置从摇篮或JVM在一般的环境变量,但它有可能欺骗蚂蚁这样的:
ant.project.properties['env.foo'] = 'bar'
我收到一个错误:'找不到属性'' – 2016-07-25 19:44:24
从gradle 2.0 docs,我看到这样的事情是可能的
test {
environment "LD_LIBRARY_PATH", "lib"
}
或在这种情况下,可以使用这个
systemProperty "java.library.path", "lib"
'我希望两年前有Gradle 2.0 :) – Sergey 2014-08-06 11:57:38
我在我的build.gradle文件(用另一个变量名)试过这个。然后我在我的测试中检查系统变量,如下所示:'assertTrue(System.getenv()。containsKey(“SOME_TEST_VAR”));'这给出了断言错误。所以,它看起来像环境变量没有设置。 – user3791111 2016-03-31 03:11:01
我收到一个错误'无法找到方法systemProperty()的参数 – 2016-07-25 19:43:39
Accep从@Sergey泰德的解决方案:
ant.project.properties['env.foo'] = 'bar'
不为我上gradle
2.9和1.9.7 ant
工作。 这没有引发任何错误,但什么都不做。事实上,如果你看一下代码它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)
你尝试通过使用Ant构建脚本'ant.importBuild'build.xml'? – 2012-01-10 00:46:18
@Benjamin这就是我想要完成的。不幸的是,传统的Ant脚本依赖于几个环境变量。 – Sergey 2012-01-10 06:31:12