2012-02-09 24 views
1

Antファイルの "variable"を1つのターゲットに変更し、その変更を別のターゲットで確認したい。グローバル変数を変更する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

[antのプロパティを上書きする方法は?](http://stackoverflow.com/questions/1866729/how-to-over-write-the-property-in-ant) – oers

+0

あなたは忘れてしまった[変数タスク]のunset = "true"(http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html) – oers

答えて

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は、変数をターゲット外には反映しません。つまり、私がこの変更を加えると、 "print-me"ターゲットのプリントが "hello"という印字を残しています...私はこのアドオンを試してみましょう。ありがとう! –

-1

これはant-contribタグを使用すると機能します。

+0

答えを説明するための例を挙げることができます。 – BellevueBob