2012-03-29 4 views
7

Ich versuche, eine Versionsnummer in einer Datei build.xml mithilfe eines ANT-Skripts zu ersetzen.Ersetzen der Eigenschaft in einer XML-Datei mithilfe von ANT

Ich habe verschiedene Ansätze versucht, StackOverflow für Antworten gesucht und erneut durchsucht, konnte aber nicht die genaue Abfrage erhalten.

so hier ist meine XML-Datei:

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

Jetzt, da u die Version gestrige Datum sehen hat. Ich muss es durch das aktuelle Datum ersetzen.

Hier ist, was ich habe versucht:

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

Antwort

9

I replaceregex in einem filterchain verwenden würde.

Zum Beispiel:

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

Wenn Sie möchten, um die Datei zu ersetzen, können Sie in eine temporäre Datei zu kopieren und zurück zu bewegen.

<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

Arbeited Danke. Aber nur eine Frage. Was, wenn ich diese Änderung an derselben Datei vornehmen möchte? Ich habe versucht: nur knapp sein Ziel Arbeit – sloggers1894

+0

Keine Sorgen. Siehe meine bearbeitete Antwort. – Synesso

Verwandte Themen