2016-12-21 3 views
1

Я модернизирую сборку от Maven до 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 

Поскольку эти свойства слишком много, плюс они используются в тестах кода, я не хочу менять имена. i.e Я не хочу менять свойство «database.host» на «databaseHost».

Может кто-нибудь объяснить эту ошибку &, если есть способ указать эти свойства без изменения их имен?

ответ

2

У Gradle есть проблемы с именами объектов в стиле Maven, поскольку скрипты сборки Gradle в основном являются строчными сценариями. Точечная нотация интерпретируется как доступ к полю объекта. Вы можете попробовать разместить свои свойства gradle.properties файл, как это:

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

А затем получить доступ к нему в вашем Gradle построить сценарий как project.properties['database.host'] или использовать Groovy синтаксис строки интерполяции, например, чтобы получить удобочитаемую строку:

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

Спасибо yanys за быстрый ответ, который я понял, град, больше. Хотя, когда я добавил записи свойств в файл gradle.properties, они были доступны только в скрипте сборки, а не в тестах. Поэтому я закончил тем, что добавил их в файл свойств в тестовых ресурсах, которые служили цели. Еще раз спасибо! – Sameer

Смежные вопросы