Ant通过xml文件中的属性名称替换属性值

时间:2015-03-31 05:49:17

标签: ant

我需要使用属性名称替换xml文件中的属性值。

例如:

<property name="test-name" value="default-value"/>

我有一个替换此值的目标。即"default-value"。用户可以多次运行此目标,如果他为属性test-name提供了错误的值,他可以再次尝试使用正确的值运行目标。因此我不能使用正则表达式来替换"default-value"。我只能依靠属性名称。有没有办法在ant?中使用它的名字替换属性值?

2 个答案:

答案 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=&quot;my.propertyKey&quot; 
                    value=&quot;user.value&quot;"
                    byline="true" file="${basedir}/test.xml">
                <regexp pattern="property name=&quot;my.property&quot; 
                    value=&quot;(.*)&quot;"/>
            </replaceregexp>

使用属性键搜索属性并替换整行。