2016-12-21 13 views
1

ビルドをMavenからGradleにアップグレードしています。既存のビルドでは、テスト中に使用される一連のプロパティが定義されています。プロパティ名は、ドット(。)をセパレータとして使用します。使用方法はありますか?セパレータのグラデル追加

例:

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

私はこれらのプロパティを指定しよう:これらのプロパティは、あまりにも多くあるので

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

、:私のビルドスクリプトで

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

私は例外を取得コードテストで使用されていますが、名前を変更したくありません。つまり、プロパティ 'database.host'を 'databaseHost'に変更したくありません。

名前を変更せずにこれらのプロパティを指定する方法がある場合、誰かがこのエラーを説明できますか?&

答えて

2

Gradleビルドスクリプトは基本的にGroovyスクリプトであるため、GradleはMavenスタイルのドット付きプロパティ名に問題があります。したがって、ドット表記法はオブジェクトフィールドへのアクセスとして解釈されます。

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

そして project.properties['database.host']ようなスクリプトを作成したり、人間が読める形式の文字列を取得するために、たとえばGroovyの文字列補間構文を使用し、あなたのGradleでそれにアクセスします:あなたは、このようなファイルにgradle.propertiesにあなたの特性を配置しようとすることができ

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

私はgradleをもっと理解しました。 gradle.propertiesファイルにプロパティー・エントリーを追加したときには、それらはビルド・スクリプトでしか使用できず、テストでは使用できませんでした。だから私は目的を果たしたテストリソースのプロパティファイルにそれらを追加しました。再度、感謝します! – Sameer

関連する問題