2012-10-10 7 views
7

から検索してトークンを置き換える現在、私はorg.apache.tools.ant.filters.ReplaceTokensを使用して、ビルド時にファイルの内容を次のように置き換えることができると理解しています。Gradle:トークンをプロパティファイル

myBeans.xml:

<bean id="mybean1" class="com.test.MyClass1" > 
    <property name="myprop1" value="@[email protected]" /> 
</bean> 

my.properties:

myprop=testme 

のGradleファイル:

from file("myBeans.xml"), { 
    filter(ReplaceTokens, tokens: ["myproperty": project.properties["myprop"]]) 
} 

私はGradleのはmy.propertiesファイルからプロパティ名を見つけたいでしょうがとそれをxmlファイルに置き換えます(フィルタにはmypropは記載されていません)。そうでない場合は、PlaceHoldersをすべて手動で追加する必要があります。事前

答えて

18

おかげで、あなたはReplaceTokens構成にマップとしてプロパティを渡すことができます。キーは置換するトークンと一致する必要があります。例:

beans.xmlの:

<bean id="mybean1" class="com.test.MyClass1" > 
    <property name="myprop1" value="@[email protected]" /> 
</bean> 

my.properties:

myproperty=testme 

build.gradle:助け

task myCopy(type:Copy){ 
    from "bean.xml" 
    into ("$buildDir/beans") 
    def myProps = new Properties() 
    file("my.properties").withInputStream{ 
     myProps.load(it); 
    } 
    filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: myProps) 
} 

希望。

歓声、 ルネ

+1

スポットオン!どうもありがとうございます。 – Chris

+2

'import org.apache.tools.ant.filters.ReplaceTokens'は私のための解決策でした、ありがとう! –

+0

これを使用して、既存のbuild.xml自体を置き換える必要がある場合、ファイルを空にしています。それを正しく達成する方法はありますか? (別のフォルダに)を使用すると、置換されたコンテンツを適切にコピーしています。 – cypronmaya

関連する問題