2012-02-09 136 views
1

我想在Ant文件中更改「變量」,在一個目標中看到另一個目標中的變化。修改全局變量Ant

<variable name="foo" value="hello" /> 
<target name="print-me"> 
    <echo message="${foo}" /> 
    <antcall target="change-me" /> 
    <echo message="${foo}" /> 
</target> 

<target name="change-me"> 
    <variable name="foo" value="world" /> 
</target> 

雖然我希望它打印: '你好,世界',它打印 '你好,你好'

+1

可能重複的[如何重寫屬性在螞蟻?](http://stackoverflow.com/questions/1866729/how-to-over-write-the-property-in-ant) – oers 2012-02-09 13:56:05

+0

你忘了[變量任務]中的unset =「true」(http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html) – oers 2012-02-09 14:03:05

回答

2

要麼使用:

<target name="change-me"> 
    <variable name="foo" unset="true"/> 
    <variable name="foo" value="world"/> 
</target> 

如OERS在他的評論中已經提到您的問題或使用更多
直接的方法與let taskAnt addon Flaka

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

... 
<!-- overwrite any existing property or userproperty 
    (those properties defined on the commandline via -Dfoo=bar ..) --> 
<fl:let> foo ::= 'world'</fl:let> 

... 
</project> 
+0

變量unset不會影響目標外的變量。意思是如果我添加這個改變,「打印我」目標中的打印仍然打印「你好」...我會嘗試這個附加組件並讓你知道。謝謝! – 2012-02-11 19:55:40

-1

如果您使用ant-contrib標記,這將起作用。

+0

你可能想舉一個例子來說明你的答案。 – BellevueBob 2013-01-18 23:11:21