Заменить свойство в XML-файле, используя ANT - PullRequest
7 голосов
/ 29 марта 2012

Я пытаюсь заменить номер версии в файле build.xml с помощью сценария ANT.

Я пробовал различные подходы, искал и повторно искал StackOverflow для ответов, но не смог получить точныйquery.

так вот мой 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>

1 Ответ

9 голосов
/ 29 марта 2012

Я бы использовал 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...