ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andres Valenciano" <>
Subject RE: Modifying properties on the fly in custom task
Date Mon, 02 Sep 2002 17:50:45 GMT
MM... ok.. I will try to clarify this... (BTW: thx for the reply) and sorry
if I am making a silly mistake or wrong assumptions (I'm sure I am...), I
can't say I am an Ant expert...  ;-)

My motivation is this, I want to "execute" one or more tasks (exec right
now) but many times based on one or more defined fileset. The idea was that
this "foreach-file" (or whatever this task could be called) could generate
an implicit (documented,etc...) property (like "${theloop.filename}") that
changes in every iteration (again) according to each file obtained from the
evaluation of the fileset(s).

Now, I tried to find info about this with the already defined tasks and I
found nothing, am I wrong?

I wrote a class extending Task with an addExec method and in my execute
method I call execTask.perform(). The problem is I need to "control" the
execution moment of the children tasks in order to change for each call the
defined "properties" or "environmental variables", whatever. I know I am
making a mistake in this part: I have tried calling project.setProperty,
project.setUserProperty, adding an Environment.Variable to the ExecTask
instance, now is see why it is not working... (from your post!) " are
bypassing Ant's property expansion mechanism...".

So, what are my options here for implementing this kind of task? Or, am I
trying to do something that should be done under a <script> element?

Thanks for your help.


-----Original Message-----
From: Erik Hatcher []
Sent: Friday, August 30, 2002 6:15 PM
To: Ant Users List
Subject: Re: Modifying properties on the fly in custom task

Since you are embedding the <exec> task within your class, you are
bypassing Ant's property expansion mechanism.

I actually referred back to my book for the answer (why memorize the
details when you can look them up easily?! :).... p. 485:


Use the results of that to pass to the arg. method.  But, I'm a bit
confused on exactly how you're doing what you say you're doing.  How are
you *changing* the value of MYVAR?  You're mutating immutable
properties?!  (which can be done, but not necessarily a good thing to do).

Is <mytask> a TaskContainer?  Or are you reimplementing the <exec>
interface yourself?  There may be better ways to accomplish what you're
after - elaborate a bit and lets work through it.


Andres Valenciano wrote:
> Hi.
> I am writing a Task that has as a child an exec task. In my execute method
> am changing properties and calling the perform method on the exectask
> this done 1 or more times before my execute finishes.
> Now, the problem I am having is that the exectask is not getting the
> "dynamically" created properties that I am using in the arg element.
> For example:
> <mytask name="MYTASK"  >
> 	<exec executable="notepad.exe"  >
> 		<arg line=" ${MYVAR}"/>
> 	</exec>
> </mytask>
> I am executing several times the exec task changing the MYVAR variable,
> the verbose output when running the script is:
> 	Executing 'notepad.exe' with arguments:
> 	'${MYVAR}'
> Any idea about how to do it? Is the exec task building the arguments
> the perform method?
> Thanks for your help!
> A.V.
> --
> To unsubscribe, e-mail:   <>
> For additional commands, e-mail: <>

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

View raw message