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

时间:2012-10-10 07:11:52

标签: ant build gradle

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

myBeans.xml

<bean id="mybean1" class="com.test.MyClass1" >
    <property name="myprop1" value="@myproperty@" />
</bean>

my.properties

myprop=testme

gradle文件:

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

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

1 个答案:

答案 0 :(得分:20)

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

beans.xml中:

<bean id="mybean1" class="com.test.MyClass1" >
    <property name="myprop1" value="@myproperty@" />
</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)
}

希望有所帮助。

欢呼声, 勒