1
我得到了一個循環訪問一些XML文件的要求,替換了其中的特定環境值並創建了一組新的XML文件。特定於環境的值將從屬性文件中獲取。我可以遍歷一個目錄來讀取所有文件,並使用xmltask替換一些特定的值,如下所示。Ant腳本通過屬性文件循環並動態替換值
<target name="updateConfig" description="update the configuration" depends="init">
<xmltask todir="${ConfigDestDirectory}" report="false" failwithoutmatch="true">
<fileset dir="${ConfigSourceDirectory}">
<include name="*.xml"/>
</fileset>
<replace path="/:application/:NVPairs/:NameValuePair[:name='Connections/HTTP/HostName']/:value/text()" withXml="localhost"/>
</xmltask>
<echo>Replaced Successfully</echo>
</target>
但我想通讀屬性文件並從中獲取路徑/值。 我嘗試使用屬性選擇器,屬性,var作爲這種情況下的不同選項,並設法獲取路徑而不是值。以下是屬性文件的片段和我正在使用的目標。
#DEV.properties
HostName.xpath=/:application/:NVPairs/:NameValuePair[:name='Connections/HTTP/HostName']/:value/text()
HostName.value=localhost
<project name="TestBuild" default="ReadPropertyFile" basedir=".">
<target name="init">
<property file="DEV.properties"/>
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask" classpath="${xmltaskPath}"/>
<taskdef resource="net/sf/antcontrib/antlib.xml" classpath="${antcontribPath}"/>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"/>
</target>
<target name="ReadPropertyFile" description="update the configuration" depends="init">
<property file="DEV.properties" prefix="x"/>
<propertyselector property="propertyList" delimiter="," select="\0" match="([^\.]*)\.xpath" casesensitive="true" distinct="true"/>
<for list="${propertyList}" param="sequence">
<sequential>
<propertyregex property="destproperty" input="@{sequence}" regexp="([^\.]*)\." select="\1" />
<property name="tempname" value="${destproperty}.value" />
<var name="localprop" value="${tempname}"/>
<echo> @{sequence} </echo>
<echo> ${[email protected]{sequence}} </echo>
<echo>destproperty --> ${destproperty}</echo>
<echo>tempname --> ${tempname}</echo>
<echo> localprop --> ${localprop}</echo>
<echo>${x.${localprop}} </echo> <!--This is not working -->
</sequential>
</for>
</target>
如果你們可以拋出一些光線,這將是非常有益的。
感謝, Venkat
我調整了下面的腳本以使用select =「\ 1」(選擇第一個匹配)而不是select =「\ 0」選擇整個字符串)。 –
嗨,帕特里斯,謝謝。它的工作完美。你說得對,我對前綴x感到困惑,對語法不太確定。直到我改變了螞蟻的版本,當地的財產纔開始工作。我現在就着手解決這個問題。 – user3218526
太棒了!