2015-03-31 76 views
0

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

例:

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

我有一个目标,以取代该值。即"default-value"。用户可以多次运行该目标,如果他的属性test-name属性值不正确,他可以尝试以正确的值再次运行目标。所以我不能用正则表达式代替"default-value"。我只能依靠物业名称。有没有办法在蚂蚁中用它的名字替换属性值?

回答

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> 

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

2

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

所以在文件的“模板”的版本,你可能有这样的事情

<document> 
    <element value="@[email protected]"/> 
</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

它不会在原来取代它,它会在副本中取代它。如果在复制操作中使用'override =“true”',那么每次使用新值时都会被替换。 – sudocode 2015-03-31 10:24:33