Установка переменных среды из Gradle - PullRequest
9 голосов
/ 09 января 2012

Мне нужно выполнить из Gradle скрипт Ant, который опирается на переменные окружения.Ant использует для этого <property environment="env"/>.

Я пытался сделать env.foo="bar" в Gradle, но он выдает исключение Groovy.

Как правильно передать переменные среды из Gradle в Ant

Ответы [ 3 ]

10 голосов
/ 14 июля 2014

Из Gradle 2.0 документов , я вижу, что-то вроде этого возможно

test {
  environment "LD_LIBRARY_PATH", "lib"
}

Или в этом случае может использовать это

systemProperty "java.library.path", "lib"
4 голосов
/ 10 января 2012

Невозможно установить переменные окружения из Gradle или JVM в целом, но можно обмануть Ant следующим образом:

ant.project.properties['env.foo'] = 'bar' 
2 голосов
/ 26 апреля 2016

Принято решение от @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)
...