Настройка переменных среды из 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)