ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From trad-ex <trad...@inter7.jp>
Subject Re: Problem with script task and properties
Date Fri, 26 May 2006 11:36:09 GMT
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: user-unsubscribe@ant.apache.org
>>>>> For additional commands, e-mail: user-help@ant.apache.org
>>>>>     
>>>>>         
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
>>>> For additional commands, e-mail: user-help@ant.apache.org
>>>>
>>>>
>>>>   
>>>>       
>>> -- 
>>> 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:user-unsubscribe@ant.apache.org
>mailto:user-help@ant.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message