我正在将构建从Maven升级到Gradle。现有构建定义了一系列属性,以便在测试期间使用。属性名称使用点(。)作为分隔符。
e.g:
<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'。
有人可以解释这个错误&amp;如果有办法指定这些属性而不更改其名称?
答案 0 :(得分:2)
Gradle在Maven样式点缀属性名称方面遇到麻烦,因为Gradle构建脚本基本上是Groovy脚本。因此点符号被解释为对象字段访问。您可以尝试将属性设置为gradle.properties文件,如下所示:
database.host=localhost
database.port=1521
database.instance=sabrixdb
然后在像project.properties['database.host']
这样的Gradle构建脚本中访问它,或者使用Groovy字符串插值语法来获取人类可读的字符串:
"Database host: ${project.'database.host'}"