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 )
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.
2. What's wrong with my ( second ) script ?
3. Without using MacrodefTask, can this issue be solved just by
ScriptTask ?
Sorry for my tedious explanation.
Best Regards,
trad-ex
>To be honest, I've never used the <script> feature of ant. Sorry, I
>think I misunderstood your question... More to the point...it looks
>like I didn't read the question correctly...
>
>Sorry 'bout that :)
>
>Scot
>
>trad-ex wrote:
>> Hi Scot,
>>
>> Thanks a lot for your reply.
>> Yes, I've already known that behavior of "Variable" Task.
>> What I would like to know is the proper coding in Script Task by using
>> Javascript.
>>
>> I wonder my conding doesn't make sense ?
>>
>> Best Regards,
>> trad-ex
>>
>>
>>> I think the idea here is to use <var> from ant contrib. It definitely
>>> works and allows one to reset properties...
>>>
>>> For instance:
>>>
>>> <project name = "example">
>>> <taskdef resource = "net/sf/antcontrib/antlib.xml"/>
>>>
>>> <var name = "my-var" value = "foo"/>
>>> <echo message = "my-var = ${my-var}"/>
>>>
>>> <var name = "my-var" value = "bar"/>
>>> <echo message = "my-var = ${my-var}"/>
>>>
>>> <var name = "my-var" value = "alpha"/>
>>> <echo message = "my-var = ${my-var}"/>
>>> </project>
>>>
>>> Will yield:
>>>
>>> [echo] my-var = foo
>>> [echo] my-var = bar
>>> [echo] my-var = alpha
>>>
>>> Above, the variable is being changed...
>>>
>>> trad-ex wrote:
>>>
>>>> Hi Steve,
>>>>
>>>> I tried to use "Variables" Task in ant-contrib, but it replicate the
>>>> same result as Dick did.
>>>> My build.xml is:
>>>>
>>>> <?xml version="1.0" ?>
>>>> <project name="build" basedir="." default="test">
>>>> <taskdef resource="net/sf/antcontrib/antlib.xml"/>
>>>> <target name="test">
>>>> <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>
>>>> </target>
>>>> <target name="echoval">
>>>> <echo>${theVal}</echo>
>>>> </target>
>>>> </project>
>>>>
>>>> The Result is:
>>>>
>>>> c:\>ant -v
>>>> Apache Ant version 1.6.2 compiled on July 16 2004
>>>> Buildfile: build.xml
>>>> Detected Java version: 1.4 in: C:\j2sdk1.4.1_07\jre
>>>> Detected OS: Windows XP
>>>> parsing buildfile C:\build.xml with URI = file:///C:/build.xml
>>>> Project base dir set to: C:\
>>>> parsing buildfile
>>>> jar:file:/C:/apache-ant-1.6.2/lib/ant-contrib.jar!/net/sf/antcontrib/
>>>> antlib.xml
>>>> with URI =
>>>> jar:file:/C:/apache-ant-1.6.2/lib/ant-contrib.jar!/net/sf/antcontrib/
>>>> antlib.xml
>>>> Build sequence for target `test' is [test]
>>>> Complete build sequence is [test, echoval, ]
>>>>
>>>> test:
>>>> [echo] foo
>>>> [echo] foo
>>>> [echo] bar
>>>> [echo] foo
>>>>
>>>> BUILD SUCCESSFUL
>>>> Total time: 0 seconds
>>>> c:\>
>>>>
>>>> Why ?
>>>> What's wrong with my description about "Variable" task ?
>>>> Any comments will be very appreciated.
>>>>
>>>> Best Regards,
>>>> trad-ex
>>>>
>>>>
>>>>
>>>>> Dick, Brian E. wrote:
>>>>>
>>>>>
>>>>>> I have just a day to get this working. These are production machines,
>>>>>> so
>>>>>> I can't deploy anything to them.
>>>>>>
>>>>>> I'm using sshexec to remotely ping from a unix host and using rcmd to
>>>>>> remotely ping from a windows host. I redirect the output from these
>>>>>> tasks to a file and then use loadfile with a filterchain to load the
>>>>>> ipaddress into a property.
>>>>>>
>>>>>> This works all fine and dandy except I need to do it in a loop, so that
>>>>>> led me to the script task. But I was having problems getting the
>>>>>> ipaddress set by loadfile back to the script. I didn't want to create
>>>>>> 20x100 properties, but if that's what it takes, so be it.
>>>>>>
>>>>>>
>>>>>>
>>>>> In that case, grab the <var> task from ant-contrib, which can be used
>>>>> to
>>>>> erase a property before you reuse it.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>>
>>> --
>>> Scot P. Floess
>>> 27 Lake Royale
>>> Louisburg, NC 27549
>>>
>>> 252-478-8087 (Home)
>>> 919-754-4592 (Work)
>>>
>>> Chief Architect JPlate http://sourceforge.net/projects/jplate
>>> Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>>>
>>
>>
>>
>
>--
>Scot P. Floess
>27 Lake Royale
>Louisburg, NC 27549
>
>252-478-8087 (Home)
>919-754-4592 (Work)
>
>Chief Architect JPlate http://sourceforge.net/projects/jplate
>Chief Architect JavaPIM http://sourceforge.net/projects/javapim
>
>
>
>---html-part included links-------
>mailto:[EMAIL PROTECTED]
>mailto:[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]