簡體   English   中英

如何從XML屬性文件加載變量?

[英]How can I load variables from an XML properties file?

我目前正在從Ant中的XML文件加載屬性。 但是,我想在for循環中執行當前的ant任務,同時每次都為相同的一組屬性加載新的XML屬性文件。

我知道存在ant-contrib的var任務,該任務使我可以覆蓋屬性。 但是,我不確定如何將其與從XML文件加載屬性結合使用。 我首先考慮過遍歷所有屬性,然后使用propertyregex任務將它們設置為新值。 不幸的是,當我開始編寫代碼來實現此目的時,我意識到我仍然不知道如何實際加載屬性值,因為它們無法覆蓋先前設置的屬性。 (好吧,他們可以使用var任務,但是就我所知,這不能用於從XML文件加載。)

有任何想法嗎? 我理想中正在尋找的任務將被稱為

<xmlvars file="myxmlpropertyfile.xml"/>

就像

<xmlproperty file="myxmlpropertyfile.xml"/>

除了它會覆蓋變量之外。

<xmlproperty>任務可以做的一件事是為每個屬性添加一個特定的值。 為什么不簡單地使用參數名稱作為前綴呢?

否則,您可以使用<echoproperties>任務取消設置所有屬性,然后循環遍歷<for>任務的下一個迭代。

這樣的東西,但是沒有經過測試:

 <for param="my.directory">
     <fileset dir="${some.directory}"/>
     <sequential>
         <xmlproperty file="@{my.directory}/myxmlpropertyfile.xml"
            prefix="foo-fighters"/>
          <blah, blah, blah/>
          <for param="reset.var">
              <echoproperty prefix=foo-fighters"/>
              <sequential>
                  <var name="@{reset.var}"
                     unset="true"/>
              </sequential>
          </for>
     </sequential>
 </for>

基本上,您使用外部<for>循環遍歷目錄,並使用<xmlproperty>設置屬性名稱。 <blah blah blah/>意味着要做你想做的。 然后,在轉到外部<for>循環的下一個迭代之前,先執行內部 <for>循環,該循環將取消設置先前在<xmlproperty>任務中設置的所有變量。

訣竅是使用變量前綴,以確保容易找到變量名。 因此, foo-fighters

看來我應該能夠通過使用var任務的unset屬性來完成此任務。 會回報...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM