> 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" <[email protected]>
To
"Ant Developers List" <[email protected]>
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]