Re: macrodef with parameters to pass to java task
Stefan Bodewig <[email protected]>
| Newsgroups | gmane.comp.jakarta.ant.user |
|---|---|
| Message-ID | <[email protected]> |
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