Wie wird eine Umgebungsvariable aus einem Gradle-Build festgelegt?

Ich versuche, eine Umgebungsvariable aus meinem Gradle-Build festzulegen. Ich bin auf MacOS X (El Capitan). Der Befehl lautet "gradle test".

Ich versuche dies in meinem build.gradle:

task setenv(type: Exec) {
    commandLine "export", "SOME_TEST_VAR=aaa"
}
test.dependsOn setenv

und der Build schlägt fehl:

Ausführung fehlgeschlagen für Aufgabe ': myproject: setenv'.

Beim Starten des Prozesses 'Befehl' Export '' ist ein Problem aufgetreten.

Ich habe es auch versucht:

test.doFirst {
    ProcessBuilder pb1 = new ProcessBuilder("export SOME_TEST_VAR=some test value")
    pb1.start();
}

Der Build ist erfolgreich. Wenn ich jedoch die Umgebungsvariable in meinem JUnit-Test überprüfe, schlägt dies fehl:

assertTrue(System.getenv().containsKey("SOME_TEST_VAR"));

Gibt es eine Möglichkeit, eine Umgebungsvariable aus einem Gradle-Build (in der build.gradle-Datei) festzulegen?

Aktualisieren

Ich habe es isoliert getestet: Die Werte werden übergeben und meine Testaufgabe empfängt alles, sei es eine systemProperty, Umgebungsvariablen oder jvmArgs.

So ist es nichts falsch mit Gradle selbst hier.

Das Problem tritt auf, wenn ich es am realen Projekt versuche. Es verwendet Spring für die Abhängigkeitsinjektion. Ich kann mich irren, aber es sieht so aus, als würde das Spring-Framework diese Werte irgendwo bereinigen.

Das Unterprojekt wird derzeit eingefroren und ich kann meine Vermutung derzeit nicht im Detail überprüfen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage