2012-03-29 16 views
7

ANTスクリプトを使用してbuild.xmlファイルのバージョン番号を置き換えようとしています。ANTを使用してxmlファイルのプロパティを置換します

私はさまざまなアプローチを試して、StackOverflowを検索して再検索しましたが、正確なクエリを取得できませんでした。 uはバージョンが昨日の日付を持って見ることができるように今

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

はそうここに私のxmlファイルです。私は現在の日付に置き換える必要があります。

<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

私はfilterchainreplaceregexを使用します。ここでは

は、私が試したものです。例えば

<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

Worked Thanks。しかし、ただ一つの質問。このファイルを同じファイルに変更したい場合はどうすればよいですか?私は試しました: tofile = "$ {Feature.dir} \ build.xml" $ {Feature.dir} \ build.xml " filtering =" yes "overwrite =" yes "> didnt仕事 – sloggers1894

+0

心配はいりません。私の編集された答えを見てください。 – Synesso

関連する問題