Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何将字符串附加到ant中的属性?_String_Ant - Fatal编程技术网

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

String 如何将字符串附加到ant中的属性?,string,ant,String,Ant,我正在使用Ant1.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.

我正在使用Ant1.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变量任务(请参阅),它提供可变属性

<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中的属性在设置后是不可变的。 使用,您可以更改或覆盖现有属性,甚至包括userproperties(通过命令行-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>

或者,您可以使用一些脚本语言(Groovy、Javascript、JRuby…)并使用ant api:
project.setProperty(字符串名称、字符串值)
覆盖属性。

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

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

    供参考:

    可能的副本
     [echo] ${fooo} => barbar
     [echo] 1. ${foo} => bar
     [echo] 2. ${foo} => foobar