5

各ビルド マシン (dev、ci、uat、...) で外部プロパティ ファイルを使用して Gradle ビルド スクリプトの「グローバル」構成を制御し、コマンド ライン引数でファイル名を指定したいと考えています。

例えばgradle -DbuildProperties=/example/config/build.properties

既にこのアプローチを使用している既存のプロジェクトがあり、(たとえば) すべてのプロジェクトを変更せずにデータベースの URL と jdbc ドライバーを修正できるようにしたいので、特に gradle.properties を使用したくありません。

これまで試してみました:-

Properties props = new Properties() 
props.load(new FileInputStream("$filename")) 
project.setProperty('props', props) 

これは機能しますが、非推奨の警告がありますが、これを回避する方法がわかりません。

ConfigSlurper で groovy スタイルの構成ファイルを使用してみました:-

environments {
    dev {
        db.security {
            driver=net.sourceforge.jtds.jdbc.Driver
            url=jdbc:someserver://somehost:1234/some_db
            username=userId
            password=secret
        }
    }
}

しかし、コロンとスラッシュが原因で例外が発生しているため、エスケープ文字で構成を台無しにする必要はありません。

これを行うには非推奨の方法が必要です-誰かがそれを行う「正しい」方法を提案できますか?

ありがとう

4

2 に答える 2

6

非推奨の警告は非常に簡単に取り除くことができます。おそらく次のようなメッセージが表示されます。

オンデマンドでのプロパティの作成 (別名動的プロパティ) は廃止され、Gradle 2.0 で削除される予定です。動的プロパティの置き換えについては、 http: //gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.htmlを参照してください。非推奨の動的プロパティ:「ルート プロジェクト 'private'」の「props」、値:「true」。

以下を置き換えることで修正できます。

project.setProperty('props', props) 

project.ext.props = props
于 2013-04-22T20:56:14.990 に答える
5

@Steinar からの応答を補足するために:

次の構文を使用することはまだ可能です:

project.ext.set('prop_name', prop_value)

ファイルからいくつかのプロパティがある場合:

props.each({ project.ext.set(it.key, it.value)} )
于 2013-08-12T15:06:02.857 に答える