2014-10-31 125 views
0

我希望能夠通過命令行設置系統屬性,以便可以通過Java代碼訪問它。我怎樣才能實現這個功能?如何使用Gradle命令行設置Java系統屬性?

以下示例失敗。

命令行

./gradlew clean test -Dfoo=bar 

Java代碼的

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

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

@ElliottFrisch設置環境變量,而不是屬性。 – chrylis 2014-10-31 20:15:22

回答

3

的build.gradle:

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

這是必要的,因爲測試總是在一個單獨的JVM上運行。實現JavaForkOptions(例如JavaExec)的所有其他任務類型具有相同的屬性。有關API詳細信息,請參閱Gradle Build Language Reference

+0

只是爲了澄清,-D參數永遠不會傳遞給JVM子進程?還是他們傳遞了一些任務,但不是測試任務?謝謝。 – 2014-10-31 20:33:58

+0

他們永遠不會自動傳遞。 – 2014-10-31 20:39:18

相關問題