Как добавить строку в свойство в ant? - PullRequest
6 голосов
/ 09 февраля 2012

Я использую ANT 1.7.0

Я хотел бы создать цель, которая при вызове добавит текст в строку (сохранено в свойстве).

например:

<property name="str.text" value="" />

<target name="append.to.property" >
  <property name="temp.text" value="${str.text}${new.text}" />
  <property name="str.text" value="${temp.text}" />
</target>

Проблема в том, что я не могу перезаписать значение свойства в одной цели и прочитать измененное значение в другой цели.

Как сделатьДобавить строку в свойство в ant?

Ответы [ 3 ]

12 голосов
/ 27 февраля 2012

Вы не можете изменить значение свойства в Ant.

Вы можете использовать переменную Ant Contrib task (см. http://ant -contrib.sourceforge.net / tasks / tasks / variable_task.html ), которые обеспечивают изменяемые свойства.

<property name="str.text" value="A" />
<property name="new.text" value="B"/>

<target name="append.to.property" >
  <var name="temp.text" value="${str.text}${new.text}" />
  <var name="str.text" value="${temp.text}" />
</target>

<target name="some.target" depends="append.to.property">
  <echo message=${str.text}/>
</target>
1 голос
/ 28 февраля 2012

Обычно свойства в ant являются неизменяемыми после установки. С Ant addon Flaka вы можете изменять или перезаписывать существующие свойства - даже свойства пользователя (эти свойства устанавливаются с помощью командной строки -Dkey = value), т.е. создавать макрос и использовать его следующим образом:

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka">

 <property name="foo" value="bar"/>

 <macrodef name="createproperty">
    <attribute name="outproperty"/>
    <attribute name="input"/>
    <sequential>
     <fl:let> @{outproperty} ::= '@{input}'</fl:let>
    </sequential>
 </macrodef>

 <!-- create new property -->
 <createproperty input="${foo}bar" outproperty="fooo"/>

    <echo>$${fooo} => ${fooo}</echo>

    <echo>1. $${foo} => ${foo}</echo> 

 <!-- overwrite existing property -->
 <createproperty input="foo${foo}" outproperty="foo"/>

    <echo>2. $${foo} => ${foo}</echo>

</project>

выход

 [echo] ${fooo} => barbar
 [echo] 1. ${foo} => bar
 [echo] 2. ${foo} => foobar

в качестве альтернативы вы можете использовать некоторый язык сценариев (Groovy, Javascript, JRuby ..) и использовать ant api:
project.setProperty(String name, String value) для перезаписи свойства.

0 голосов
/ 19 февраля 2018

Если предполагается, что вы хотите добавить строку в существующее значение свойства, выполните следующие шаги:

  1. Нам нужно загрузить файл свойств, в котором нам нужно изменить значение.
  2. Получить существующее значение свойства из файла во временном свойстве, используя задачу свойства ANT.
  3. Затем выполните обычный процесс изменения значения свойства.

1 Файл свойств 1 2 строка для добавления 3 ANT Script 4 Конечное значение свойства

Для справки: Wordpress Link

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...