> Is your motivation being able to have conditionals in disguise, i.e.
> be able to write

I believe that my deeper motivation is to be able to do "scripting" 
without falling back
to Javascript, Python et cetera. I'm not using them because they are not 
part of a
standard Ant installation.

Here's my motivation for having "run-macro" - it would simplify my Ant 
scripts 
considerably. On loading my build script, a macro gets executed which 
guesses the 
project's type. The result of this guess is property '"project.type" which 
(currently) 
holds on of the values 

 jar
 jsf
 war
 ear

Further target "package" exists which calls a specific macro depending on 
project.type's value.
So my package macro contains something like

 <switch value="${project.type}">
  <case value="jar">
    <package-jar />
  </case>
  ..
  <case value="ear">
    <package-ear />
 </case>
 </switch>

Having a  "run-macro" around I could shorten things to simply write 

  <run-macro name="package-${project.type}" />

Another thing that strikes me is the distinction between a target and a 
task and macrodef.
It's rather easy to implement a task executing an arbitrary target using
getProject().executeTarget().

Why not providing the same functionality for a macro as well? Honestly, I 
regard a target 
nothing more than a "public" macro, i.e. a macro able to call from the 
command line.







"Dominique Devienne" <[EMAIL PROTECTED]> 
06-06-2006 15:18
Please respond to
"Ant Developers List" <dev@ant.apache.org>


To
"Ant Developers List" <dev@ant.apache.org>
cc

Subject
Re: how to call macros dynamically?






Is your motivation being able to have conditionals in disguise, i.e.
be able to write

<run-macro name="${do-this}" />

? Otherwise I can't see the use for this. Just curious ;-) Thanks, --DD

On 6/6/06, Wolfgang Häfelinger <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I wonder how  to  implement a task (in Java) allowing me to execute
> a macro. I tried to understand how it works looking into Ant's source
> code, but I'm bit lost. Would be kind if someone could give me a
> "roadmap" how to do it ..
>
> What I'm looking for is something like ..
>
> Assume I have a macro:
>
> <macrodef name="x">
>  <attribute name="a" default="hello" />
>  ..
>  </macrodef>
>
> Then I want to be able to say
>
>   <run-macro name="x" />
>
> instead of
>
>  <x/>
>
> For the beginning I'm happy to call a macro without any parameters like
> shown. Even better would be to be able to provide parameters as well:
>
>  <run-macro name="x" a="hello, world" />    <!-- utopia -->
>
>  <run-macro name="x">
>   <param name="a" value="hello, world" />
>  </run-macro>
>
> Any hints?
>
> Cheers,
> Wolfgang.
>
>
> ---------------------------------------------------------------------
> 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]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to