2012-03-29 73 views
7

我試圖用ANT腳本替換build.xml文件中的版本號。使用ANT替換xml文件中的屬性

我試過各種方法,搜索並重新搜索StackOverflow的答案,但無法得到確切的查詢。

所以這裏是我的xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.0"?> 

<project name="feature" default="main" basedir="."> 
<target name="init">  
    <property name="Version" value="1.0.0.20120327"/> 
</target> 

    <target name="main" depends="init"> 
    <description>Main target</description> 
</target> 
</project> 

現在就像你看到的版本有昨天的日期。我需要用當前日期替換它。

這裏是我試過:

<target name="replace"> 
    <tstamp > 
    <format property="touch.time" pattern="yyyyMMdd"/> 
    </tstamp> 

<property name="Feature.dir" location="../feature" /> 

<!--Didnt Work-->  
<copy file="${Feature.dir}\build.xml" tofile="${Feature.dir}\build1.xml" 
filtering="yes" overwrite="yes"> 
<filterset> 
    <filter token="Version" value="1.0.0.${touch.time}"/> 
</filterset> 
    </copy> 

    <!--Didnt work 

    <replacetoken><![CDATA[<property name="Version" value=""/>]]> 
    </replacetoken> 
    <replacevalue><![CDATA[<property name="Version"value="1.0.0.${touchtime}" />]]> 
    </replacevalue> 

    --> 


<!-- Didnt work 
    <copy file="${Feature.dir}/build.xml" tofile="${Feature.dir}/build1.xml" > 
     <filterchain> 
     <tokenfilter> 
       <replaceregex pattern="^[ \t]*Version[ \t]*=.*$" 
           replace="Version=1.0.0.${touch.time}"/> 
     </tokenfilter> 
      </filterchain> 
</copy> 
--> 
</target> 

回答

9

我會用一個replaceregex裏面filterchain

例如:

<copy file="${Feature.dir}\build.xml" tofile="${Feature.dir}\build1.xml"  
    filtering="yes" overwrite="yes"> 
    <filterchain> 
     <tokenfilter> 
      <replaceregex pattern="1.0.0.[0-9.]*" replace="1.0.0.${touch.time}"/> 
     </tokenfilter> 
    </filterchain> 
</copy> 

如果要替換的文件,隨意複製到一個臨時文件,將其移回。

<tempfile property="build.temp.file.name"/> 
<copy file="${Feature.dir}\build.xml" tofile="${build.temp.file.name}" ... /> 
<move file="${build.temp.file.name}" tofile="${Feature.dir}\build.xml" /> 
+0

工作致謝。但只有一個問題。如果我想對同一個文件進行此更改,該怎麼辦?我試過了: didnt工作 – sloggers1894 2012-03-29 17:53:02

+0

不用擔心。看到我編輯的答案。 – Synesso 2012-03-29 20:55:55