如何将字符串附加到ant中的属性



我正在使用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中的属性?

您不能更改Ant中属性的值。

您可以使用Ant-Contrib变量任务(请参阅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>

通常,ant中的属性一旦设置就不可变。使用Ant插件Flaka,您可以更改或覆盖现有属性,甚至是用户属性(通过命令行设置的属性-Dkey=value),即创建一个macrodef并像这样使用它:

<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)来覆盖属性。

如果您想在现有属性值中附加一个字符串,请执行以下步骤。

  1. 我们需要加载属性文件,我们需要更改其中的值
  2. 使用ANT属性任务从临时属性中的文件中获取现有属性值
  3. 然后执行更改"属性"值的正常过程

1属性文件1要附加的2字符串3 ANT脚本4最终属性值

参考:Wordpress链接

相关内容

  • 没有找到相关文章

最新更新