2009-09-16 142 views
4

如何編寫(或重寫)以下內容:螞蟻,(過)寫入文件

  <dependencies> 
      <dependency> 
       <groupId>ged.eprom</groupId> 
       <artifactId>epromx</artifactId> 
       <version>${version.to.set}</version> 
       <classifier>stubjava</classifier> 
      </dependency> 
     </dependencies> 

成所謂的pom.xml在當前目錄下的文件。

我已經試過了ant腳本:

 <echo file="pom.xml"> 
     <dependencies> 
      <dependency> 
       <groupId>ged.eprom</groupId> 
       <artifactId>epromx</artifactId> 
       <version>${version.to.set}</version> 
       <classifier>stubjava</classifier> 
      </dependency> 
     </dependencies> 
    </echo> 

但我得到的錯誤信息:

echo doesn't support the nested "dependencies" element. 

回答

3

螞蟻解析器讀取你想呼應的企圖無效子元素添加到<echo/>父數據。如果你想重複這些信息出來pom.xml,你應該使用&lt;&gt;實體的元素輸出編碼:

<echo file="pom.xml"> 
      &lt;dependencies&gt; 
        &lt;dependency&gt; 
          &lt;groupId&gt;ged.eprom&lt;/groupId&gt; 
          &lt;artifactId&gt;epromx&lt;/artifactId&gt; 
          &lt;version&gt;${version.to.set}&lt;/version&gt; 
          &lt;classifier&gt;stubjava&lt;/classifier&gt; 
        &lt;/dependency&gt; 
      &lt;/dependencies&gt; 
</echo> 
24

你必須逃離了CDATA標籤的內容,這也意味着它不會解釋變量替換,所以我會在三個回聲語句中分解它。

<echo file="pom.xml"><![CDATA[ 
      <dependencies> 
        <dependency> 
          <groupId>ged.eprom</groupId> 
          <artifactId>epromx</artifactId> 
          <version>]]></echo> 
    <echo file="pom.xml" append="true">${version.to.set}</echo> 
    <echo file="pom.xml" append="true"><![CDATA[</version> 
          <classifier>stubjava</classifier> 
        </dependency> 
      </dependencies> 
    ]]> </echo> 
+0

$ {}替換的好處 – skaffman 2009-09-16 13:26:21

+0

請注意,Ant自1.8.0以來擴展了CDATA塊中的屬性。你可以在'replacetoken'上使用'expandProperties'屬性來控制這個行爲。 – sherb 2014-06-26 18:37:55

13

你有echoxml任務:

http://ant.apache.org/manual/Tasks/echoxml.html

<echoxml file="pom.xml"> 
    <dependencies> 
    <dependency> 
     <groupId>ged.eprom</groupId> 
     <artifactId>epromx</artifactId> 
     <version>${version.to.set}</version> 
     <classifier>stubjava</classifier> 
    </dependency> 
    </dependencies> 
</echoxml> 
+2

儘管對這個特定的XML代碼段無關緊要,但應該注意的是'echoxml'任務不一定會寫出你逐字提供的XML。例如,至少在Windows上使用Ant 1.8.2(以及其他平臺上的其他版本)時,使用'echoxml'任務似乎會切換我包含的任何屬性節點的順序以按字母順序排序: ' ' 將被寫出屬性順序切換到字母,即 '' – 2012-06-15 02:36:16