2009-09-16 2 views
4

Как написать (или переписать) следующее содержание:Ant (над) записи в файл

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

в файл с именем pom.xml в текущем каталоге.

Я попытался муравья сценарий:

 <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

+0

Обратите внимание, что Ant расширяет свойства в блоках CDATA с версии 1.8.0. Вы можете использовать атрибут 'expandProperties' для' replacetoken' для управления этим поведением. – sherb

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, который вы даете ему дословно. Например, по крайней мере при использовании Ant 1.8.2 в Windows (и, вероятно, в других версиях на других платформах) использование задачи 'echoxml', похоже, переключает порядок любых атрибутных узлов, которые я включаю для сортировки в алфавитном порядке: ' <эль-б = «х» а = «х» /> ' будет выписан с порядком атрибутами переключился на алфавитном, т.е. ' <эш а = «х» b = "x" /> ' –

Смежные вопросы