I've never used the <script> task...so I really don't have an answer for
you...
I do have a question...is there a reason you are using script versus ant
xml tasks? I'm guessing its just to see how things work?
Sorry I don't have an answer :( I am fairly slammed today at work...so
I don't have much time to look into this...I might have some free time
this weekend...no promises ;)
Scot
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 )
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]
--
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