0

私は既存のMavenビルドをgraldeに移行しており、この問題に直面しています。Maven pom.xmlでは、springpropertyplaceholderConfig値がMavenプロファイルで指定されます。Mavenビルドは、dev、test、prodの3種類のプロファイルを指定します

私はgradleビルドで同じことを達成したいのですが、今までgradleでそれを行う方法を理解することができません

ありがとう、Manoj

4

1 に答える 1

1

gradleを使用して既存のmvnプロファイルをモデル化する方法にはさまざまなオプションがあると思います。ここで1つの例を示します。

次のようなプロパティファイルがあるとします。

property1=$prop1 //prop1 and prop2 are placeholder for your environment specific values
property2=$prop2

これで、build.gradleファイルでプロファイルをモデル化できます。

def profileProperties = [
    test:[prop1:"testValue1", prop2:"testValue2"],
    dev:[prop1:"devValue1", prop2:"devValue2"],
    prod:[prop1:"prodValue1", prop2:"prodValue2"]
]

これは、groovyで定義された通常のネストされたマップです。

コマンドラインオプション「profile」をgradle呼び出しに渡すことによって

gradle clean build -Pprofile=dev

現在使用している環境をgradleプロジェクトに渡すことができます。ビルドスクリプトでは、ビルドファイルに以下を追加することでこれを区別できます。

def usedProfile = project.getProperty("profile")

processResources{
     expand(profileProperties[usedProfile])
}

これにより、定義されたprofileAttributeが取得され、それに応じて環境プロパティのマップが読み取られます。この環境プロパティは、gradleAPIの一部であるexpandfilterメソッドにマップとして渡されます。詳細については、 http: //gradle.org/docs/current/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy :expand(java.util.Map )をご覧ください。展開方法について。

単純なJavaプロジェクトのbuild.gradleファイル全体は次のようになります。

apply plugin:'java'

def profileProperties = [
    test:[prop1:"testValue1", prop2:"testValue2"],
    dev:[prop1:"devValue1", prop2:"devValue2"],
    prod:[prop1:"prodValue1", prop2:"prodValue2"]
]


def usedProfile = project.getProperty("profile")
processResources{
    expand(profileProperties[usedProfile])
}

これは単なるドラフトです。もちろん、ここですべてのグルーヴィーな良さを使用して、デフォルトのプロファイルなどを使用して、ここにもう少しロジックを追加できます。

お役に立てば幸いです。

よろしく、ルネ

于 2012-06-04T23:35:56.867 に答える