我需要使用属性名称替换xml文件中的属性值。
例如:
<property name="test-name" value="default-value"/>
我有一个替换此值的目标。即"default-value"
。用户可以多次运行此目标,如果他为属性test-name
提供了错误的值,他可以再次尝试使用正确的值运行目标。因此我不能使用正则表达式来替换"default-value"
。我只能依靠属性名称。有没有办法在ant?中使用它的名字替换属性值?
答案 0 :(得分:2)
在Ant中执行此操作的典型方法是复制或移动要更改的文件,使用FilterSet定义要在文件中替换的标记 - 值对。
所以在你的&#34;模板&#34;你可能有这样的文件版本
<document>
<element value="@test-name@"/>
</document>
在您的构建文件中,您可能会遇到以下情况:
<property name="my.value" value="default-value"/>
<copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt" override="true">
<filterset>
<filter token="test-name" value="${my.value}"/>
</filterset>
</copy>
答案 1 :(得分:0)
由于我想允许用户多次替换值(如果他/她给出了错误的值),我想出了以下解决方案,
<replaceregexp
replace="property name="my.propertyKey"
value="user.value""
byline="true" file="${basedir}/test.xml">
<regexp pattern="property name="my.property"
value="(.*)""/>
</replaceregexp>
使用属性键搜索属性并替换整行。