2014-10-31 5 views
0

Я хочу иметь возможность установить системное свойство через командную строку, чтобы к нему можно было получить доступ с помощью java-кода. Как я могу достичь этой функциональности?Как установить системное свойство Java с помощью кодовой строки Gradle?

Ниже приведен пример ниже.

Командная строка

./gradlew clean test -Dfoo=bar 

Java Code

@Test 
public void shouldGetFoo(){ 
    String myProp = System.getProperty("foo"); 

    assertThat(myProp, is("bar")); 
} 
+0

@ElliottFrisch Это устанавливает переменные среды, а не свойства. – chrylis

ответ

3

build.gradle:

test { 
    systemProperty "foo", System.getProperty("foo") 
} 

Это необходимо, потому что тесты всегда выполняется в отдельном JVM. Все остальные типы задач, которые реализуют JavaForkOptions (например, JavaExec), имеют то же свойство. Подробные сведения об API см. В разделе Gradle Build Language Reference.

+0

Итак, просто для пояснения, аргументы -D никогда не передаются подпроцессам JVM? Или они передаются для выполнения некоторых задач, но не для тестовой задачи? Благодарю. –

+0

Они никогда не передаются автоматически. –

Смежные вопросы