Ant 在 xml 文件中用 属性 名称替换 属性 值

Ant replace property value by property name in a xml file

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

例如:

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

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

在 Ant 中执行此操作的典型方法是复制或移动要更改的文件,使用 FilterSet 定义文件中要替换的标记值对。

所以在你的 "template" 版本的文件中你可能有这样的东西

<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>

因为我想让用户多次替换值(如果 he/she 给出了错误的值)我想出了以下解决方案,

           <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>

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