trad-ex wrote:
Hi Scot,
Hi folks,
Sorry for my late response & poor English.
I try to organize the discussion on this thread.
As originally questions by other person, how can he pass values from a
script into a target in spite of the immutablity of properties in Ant ?
A part of his script is below:
<target name="test">
<script language="javascript"><![CDATA[
project = self.getProject();
echo = project.createTask("echo");
project.setProperty("theVal", "foo");
echo.setMessage(project.getProperty("theVal"));
echo.perform();
echoval.execute();
project.setProperty("theVal", "bar");
echo.setMessage(project.getProperty("theVal"));
echo.perform();
echoval.execute();
]]></script>
</target>
<target name="echoval">
<echo>${theVal}</echo>
</target>
This script produces the following output.
test:
[echo] foo
[echo] foo
[echo] bar
[echo] foo ( -> bar expected )
So, because the way of getting rid of immutability is using VariableTask
in Ant-contrib, I tried to change his script above like this below:
<script language="javascript"><![CDATA[
project = self.getProject();
echo = project.createTask("echo");
variable = project.createTask("var");
variable.setName("theVal");
variable.setValue("foo");
variable.execute();
echo.setMessage(project.getProperty("theVal"));
echo.perform();
echoval.execute();
variable.setName("theVal");
variable.setValue("bar");
variable.execute();
echo.setMessage(project.getProperty("theVal"));
echo.perform();
echoval.execute();
]]></script>
But, this script replicated the same result
[echo] foo
[echo] foo
[echo] bar
[echo] foo ( -> bar expected )
Maybe echo isnt updating its string. Just go Project.log() instead.
So I consulted the javadoc of Ant, I found that org.apache.tools.ant.
Project#setProperty can overwrite the given property!
My questions are:
1. Why couldn't the first script overwrite the value of property ?
It's not because of immutability, IMHO.
maybe it did, and the logging is wrong
2. What's wrong with my ( second ) script ?
same as with the first?
3. Without using MacrodefTask, can this issue be solved just by
ScriptTask ?
It looks to me like you are overwriting a property.
Project.setNewProperty() implements immutability rules, but
Project.setProperty() doesnt.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]