有没有办法使用。 gradle额外属性中的分隔符

时间:2016-12-21 23:22:08

标签: gradle

我正在将构建从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;如果有办法指定这些属性而不更改其名称?

1 个答案:

答案 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'}"