2017-06-15 24 views
0

在我gradle這個項目,我有一個測試任務,並設置一些系統屬性從gradle.property文件中讀取這樣的正確方法:搖籃和Java:什麼是調用測試任務系統屬性

systemProperties["property1.username"] = property1_username 

而且一些性質是這樣的:

systemProperty "property2.id",project.getProperty("property2.id") 

是什麼在兩者之間的區別?我看到的區別是,property2無法使用systemProperties,所以我經歷了不同的路線。

回答

1

這兩個例子都基本上是有效的方法來註冊您的Gradle Test任務的系統屬性。

在第一個示例中,您可以通過隱藏的吸氣器(它是Groovy feature)直接訪問systemProperties屬性。此屬性是Map,而在Groovy中,您可以直接使用下標運算符[]添加條目。您使用字符串"property1.username"作爲條目鍵值,並使用表達式property1_username的值作爲條目值。該表達式必須可以在Gradle Project範圍內解析,但例如Gradle properties,從gradle.properties文件自動添加到此範圍。

在第二個示例中,您正在使用Test類的systemProperty方法。它需要兩個參數(一個名稱和一個值),並在上面提到的Map中添加一個新條目。 Groovy允許爲方法調用省略不必要的括號。要獲取系統屬性值(第二個方法參數),請調用Project對象的getProperty方法,該方法也解析了Gradle Project範圍中的屬性。

我不知道,爲什麼你的property2沒有與systemProperties方法一起工作,也許它是一個簡單的錯字,因爲這兩種方式應該像魅力一樣工作。隨意與鏈接的文檔一起工作,瞭解Gradle生態系統中不同方法如何工作。