ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Matèrne (jhm) <apa...@materne.de>
Subject AW: macrodef with parameters to pass to java task
Date Mon, 29 May 2017 10:59:33 GMT
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:bodewig@apache.org]
> Gesendet: Montag, 29. Mai 2017 12:17
> An: user@ant.apache.org
> 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: user-unsubscribe@ant.apache.org For additional
> commands, e-mail: user-help@ant.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message