Ant Gradle:通过从属性文件中查找令牌来替换令牌
目前我了解到,我们可以使用Ant Gradle:通过从属性文件中查找令牌来替换令牌,ant,build,gradle,Ant,Build,Gradle,目前我了解到,我们可以使用org.apache.tools.ant.filters.ReplaceTokens以以下方式在构建期间替换文件的内容 myBeans.xml: <bean id="mybean1" class="com.test.MyClass1" > <property name="myprop1" value="@myproperty@" /> </bean> 渐变文件: from file("myBeans.xml"), {
org.apache.tools.ant.filters.ReplaceTokens
以以下方式在构建期间替换文件的内容
myBeans.xml
:
<bean id="mybean1" class="com.test.MyClass1" >
<property name="myprop1" value="@myproperty@" />
</bean>
渐变文件:
from file("myBeans.xml"), {
filter(ReplaceTokens, tokens: ["myproperty": project.properties["myprop"]])
}
但是,我希望gradle从
my.properties
文件中查找属性名称,并将其替换到xml文件中(在筛选器中不提及myprop
)。如果没有,我将不得不手动添加所有的占位符。您可以将属性作为映射传递到ReplaceTokens配置。密钥必须与要替换的令牌匹配。例如:
beans.xml:
<bean id="mybean1" class="com.test.MyClass1" >
<property name="myprop1" value="@myproperty@" />
</bean>
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)
}
希望这有帮助
干杯,
勒内现场!!非常感谢。import org.apache.tools.ant.filters.ReplaceTokens
是我的解决方案,谢谢!使用这种方法,如果我们需要替换现有的build.xml本身,它将清空文件。有什么方法可以恰当地实现它吗?使用into(到另一个文件夹),它正在正确复制替换的内容。关键是将参数名称指定为tokens
。filter
任务的实际签名是filter(映射属性,类
myproperty=testme
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)
}