macrodef with parameters to pass to java task

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

macrodef with parameters to pass to java task

Al Le
Hello,

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>

   
   
Then I use the macro as follows:

    <execMyProgram>
        <programArgs>
            <arg value="arg1"/>
            <arg value="arg2"/>
        </programArgs>
    </executeProcessMonitor>

   
But I get the error message: The <java> type doesn't support the nested "programArgs" element.

Thank you for the help!

AL

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Aw: macrodef with parameters to pass to java task

Al Le
I'm sorry, the last closing tag in the example should of course be "</execMyProgram>".


> Gesendet: Montag, 29. Mai 2017 um 12:04 Uhr
> Von: "Al Le" <[hidden email]>
> An: [hidden email]
> Betreff: macrodef with parameters to pass to java task
>
> Hello,
>
> 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>
>
>    
>    
> Then I use the macro as follows:
>
>     <execMyProgram>
>         <programArgs>
>             <arg value="arg1"/>
>             <arg value="arg2"/>
>         </programArgs>
>     </executeProcessMonitor>
>
>    
> But I get the error message: The <java> type doesn't support the nested "programArgs" element.
>
> Thank you for the help!
>
> AL
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: macrodef with parameters to pass to java task

Stefan Bodewig
In reply to this post by Al Le
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: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

AW: macrodef with parameters to pass to java task

Jan Matèrne (jhm)
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:[hidden email]]
> Gesendet: Montag, 29. Mai 2017 12:17
> An: [hidden email]
> 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: [hidden email] For additional
> commands, e-mail: [hidden email]



---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Aw: Re: macrodef with parameters to pass to java task

Al Le
In reply to this post by Stefan Bodewig
Yes, it works! Thank you!



> Gesendet: Montag, 29. Mai 2017 um 12:16 Uhr
> Von: "Stefan Bodewig" <[hidden email]>
> An: [hidden email]
> 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: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Loading...