Настройка переменных среды из Gradle
мне нужно выполнить из Gradle скрипт Ant, который полагается на переменные среды.
Муравей использует <property environment="env"/>
для него.
Я пытался сделать env.foo="bar"
в Gradle, но он выдает исключение Groovy.
каков правильный способ передачи переменных среды из Gradle в Ant?
3 ответов
С gradle 2.0 docs, Я вижу что-то подобное можно
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.апаш.инструменты.муравей.PropertyHelper#getProperties это:
public Hashtable<String, Object> getProperties() {
//avoid concurrent modification:
synchronized (properties) {
return new Hashtable<String, Object>(properties);
}
}
поэтому он делает четкие копии и она не может работать.
как это сделать правильно in :
ant.project.setProperty('env.foo', 'bar')
документация упомяните несколько других способов (обратите внимание, без проекта):
ant.buildDir = buildDir
ant.properties.buildDir = buildDir
ant.properties['buildDir'] = buildDir
ant.property(name: 'buildDir', location: buildDir)