With that macro definition you also could use the other available nested
elements:
<execMyProgram>
<!-- examples from <java> -->
<arg value="arg1"/>
<jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/>
<sysproperty key="DEBUG" value="true"/>
<classpath>
<pathelement location="dist/test.jar"/>
<pathelement path="${java.class.path}"/>
</classpath>
<!-- example from <exec> -->
<redirector outputproperty="redirector.out"
errorproperty="redirector.err"
inputstring="blah before blah">
<inputfilterchain>
<replacestring from="before" to="after"/>
</inputfilterchain>
<outputmapper type="merge" to="redirector.out"/>
<errormapper type="merge" to="redirector.err"/>
</redirector>
</execMyProgram>
Jan
> -----Ursprüngliche Nachricht-----
> Von: Stefan Bodewig [mailto:[email protected]]
> Gesendet: Montag, 29. Mai 2017 12:17
> An: [email protected]
> Betreff: Re: macrodef with parameters to pass to java task
>
> On 2017-05-29, Al Le wrote:
>
> > in my ant script I'd like to define a macro (via macrodef) which
> would call the 'java' task as a part of its body/implementation.
>
> > In the java task call in the macro, I want to just specify the main
> class name and the classpath. The parameters (which are usually
> specified via nested 'arg' elements) should be as variable as they are
> in the original java task.
>
> > How would I accomplish this?
>
> > What I've come up with until now is:
>
> > <macrodef name="execMyProgram">
> > <element name="programArgs" implicit="true"
> description="'arg'
> > entries for the program, use like in the java task"/>
>
> > <sequential>
> > <java classname="my.class.name"
> classpathref="my.classpath">
> > <programArgs/>
> > </java>
> > </sequential>
> > </macrodef>
>
> This is the correct way to do it. "implicit=true" means any element you
> nest into <execMyProgram> later will get collected as child of your
> <programArgs> element and you don't need to use that element name
> explicitly.
>
> So instead of
>
> > Then I use the macro as follows:
>
> > <execMyProgram>
> > <programArgs>
> > <arg value="arg1"/>
> > <arg value="arg2"/>
> > </programArgs>
> > </executeProcessMonitor>
>
> you only have to use
>
> <execMyProgram>
> <arg value="arg1"/>
> <arg value="arg2"/>
> </executeProcessMonitor>
>
> Stefan
>
> ---------------------------------------------------------------------
> 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]