> 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]