Gradle:通过从属性文件中查找标记来替换标记

Chr*_*ris 8 ant build gradle

目前我了解我们可以使用org.apache.tools.ant.filters.ReplaceTokens以下方式在构建期间替换文件的内容.

myBeans.xml:

<bean id="mybean1" class="com.test.MyClass1" >
    <property name="myprop1" value="@myproperty@" />
</bean>
Run Code Online (Sandbox Code Playgroud)

my.properties:

myprop=testme
Run Code Online (Sandbox Code Playgroud)

gradle文件:

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

但是我希望gradle从my.properties文件中找到属性名称并将其替换为xml文件(myprop在过滤器中没有提及).如果没有,我将不得不PlaceHolders手动添加所有.

Ren*_*hke 20

您可以将属性作为映射传递给ReplaceTokens配置.密钥必须与您要查看的令牌匹配.例:

beans.xml中:

<bean id="mybean1" class="com.test.MyClass1" >
    <property name="myprop1" value="@myproperty@" />
</bean>
Run Code Online (Sandbox Code Playgroud)

my.properties:

myproperty=testme
Run Code Online (Sandbox Code Playgroud)

的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)
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

欢呼,勒内

  • `import org.apache.tools.ant.filters.ReplaceTokens`是我的解决方案,谢谢! (4认同)