2016-12-21 50 views
1

我正在升級從Maven到Gradle的構建。現有的構建定義了一系列屬性,以便在測試期間使用。屬性名稱使用點(。)作爲分隔符。有沒有辦法使用。分離器在gradle額外屬性

如:

<database.host>localhost</database.host> 
<database.port>1521</database.port> 
<database.instance>mydb</database.instance> 
...and many more like this 

當我試圖指定這些屬性:在我的構建腳本

ext { 
    database.host = 'localhost' 
    database.port = '1521' 
    database.instance = 'sabrixdb' 
} 

我得到異常:

A problem occurred evaluating root project 'my-project'. 
> Cannot get property 'database' on extra properties extension as it does not exist 

由於這些特性太多,再加上它們在代碼測試中使用,我不想更改名稱。即我不想將屬性'database.host'更改爲'databaseHost'。

有人可以解釋這個錯誤&如果有方法來指定這些屬性而不更改它們的名稱嗎?

回答

2

Gradle遇到Maven樣式點屬性名稱時遇到問題,因爲Gradle構建腳本基本上是Groovy腳本。所以點符號解釋爲對象字段訪問。你可以嘗試把你的屬性gradle.properties文件是這樣的:

database.host=localhost 
database.port=1521 
database.instance=sabrixdb 

,然後訪問它在你的搖籃構建腳本像project.properties['database.host']或使用Groovy串插語法例如獲得人類可讀的字符串:

"Database host: ${project.'database.host'}" 
+0

感謝yanys的快速回答,這讓我明白了gradle,更多。儘管當我將屬性條目添加到gradle.properties文件中時,它們只能在構建腳本中使用,而不能在測試中使用。所以我最終將這些添加到測試資源中的一個屬性文件中,達到了目的。再次感謝! – Sameer

相關問題