ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andres Valenciano" <avalenci...@artinsoft.com>
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!) "...you 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.

A.V.




-----Original Message-----
From: Erik Hatcher [mailto:jakarta-ant@ehatchersolutions.com]
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:

getProject().replaceProperties(someString)

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.

	Erik


Andres Valenciano wrote:
> Hi.
>
> I am writing a Task that has as a child an exec task. In my execute method
I
> am changing properties and calling the perform method on the exectask
added,
> 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,
BUT
> 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
before
> the perform method?
>
>
> Thanks for your help!
>
>
> A.V.
>
>
> --
> To unsubscribe, e-mail:   <mailto:ant-user-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:ant-user-help@jakarta.apache.org>
>
>
>



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


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


Mime
View raw message