繁体   English   中英

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赋予了错误的值,则用户可以多次运行该目标,然后可以尝试使用正确的值再次运行目标。 因此,我不能使用正则表达式替换"default-value" 我只能依靠属性名称。 有没有一种方法可以使用ant中的名称替换属性值?

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

因此,在文件的“模板”版本中,您可能会有类似的内容

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

由于我想允许用户多次替换值(如果他/她输入了错误的值),我想出了以下解决方案,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM