How to define a task with nested elements in Ant?

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

How to define a task with nested elements in Ant?

Al Le
Hello,

is it possible to define a task in Ant which would have some nested
elements? Sort of like how it's done with the macrodef task but with a
bit structure.

For example, I'd like to define a task which would be used as follows:

<mytask>
     <paramA value="AAA1"/>
     <paramA value="AAA2"/>
     <paramB value="BBB"/>
</mytask>


This should internally translate to

<java classname="some.Class">
     <arg value="-parameterA"/> <arg value="AAA1"/>
     <arg value="-parameterA"/> <arg value="AAA2"/>
     <arg value="-parameterB"/> <arg value="BBB"/>
</java>


I.e. a <paramA> in the custom task should result in two args for the
java task.

I know I could write a custom task in Java using an instance of the java
task in the implementation. But I'd like to know whether (and how) it's
possible to do this directly in Ant (possibly with javascript), i.e.
without having to have some external JARs.

Thank you for any hints!

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: How to define a task with nested elements in Ant?

Jan Matèrne (jhm)
I dont know any easy way.
Simplest thing would be writing that kind in Java.
And if you dont want to download that jar from your buildfile you could the jar creation inline:
- generate the code (<echo>)
- compile (<javac>)
- archive that (<jar>)
- include that (<taskdef>)

Via <script> you have access to the Ant API so it could be possible to do that this way.
But I think, that's very hard ...

Jan

> -----Ursprüngliche Nachricht-----
> Von: Al Le [mailto:[hidden email]]
> Gesendet: Samstag, 3. Juni 2017 23:21
> An: Ant Users List
> Betreff: How to define a task with nested elements in Ant?
>
> Hello,
>
> is it possible to define a task in Ant which would have some nested
> elements? Sort of like how it's done with the macrodef task but with a
> bit structure.
>
> For example, I'd like to define a task which would be used as follows:
>
> <mytask>
>      <paramA value="AAA1"/>
>      <paramA value="AAA2"/>
>      <paramB value="BBB"/>
> </mytask>
>
>
> This should internally translate to
>
> <java classname="some.Class">
>      <arg value="-parameterA"/> <arg value="AAA1"/>
>      <arg value="-parameterA"/> <arg value="AAA2"/>
>      <arg value="-parameterB"/> <arg value="BBB"/> </java>
>
>
> I.e. a <paramA> in the custom task should result in two args for the
> java task.
>
> I know I could write a custom task in Java using an instance of the
> java task in the implementation. But I'd like to know whether (and how)
> it's possible to do this directly in Ant (possibly with javascript),
> i.e.
> without having to have some external JARs.
>
> Thank you for any hints!
>
> 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: How to define a task with nested elements in Ant?

Alexander Levin
Hrm...

It would be cool if there existed a task which would allow to construct
the translation of the task in Ant into some other existing tasks, e.g.
using XPath.

I.e. you'd

1. Define the syntax of a new task; not with 'attribute' and 'element'
(like in macrodef) but via e.g. XSD.

2. Define how instances of this task should translate into existing Ant
tasks, e.g. using XSL.

The first thing would be used by Ant to check whether the task is used
properly. The second thing would be used to execute such a task: first,
Ant would apply the XSL to the task instance which would yield a
fragment consisting of known ant tasks; then Ant would execute this
fragment.

Have such thought been played with in the Ant community? I think, it
would be a powerful tool to create custom tasks without having to code
in Java.

Just thinking aloud...



Am 03.06.2017 um 23:42 schrieb Jan Matèrne (jhm):

> I dont know any easy way.
> Simplest thing would be writing that kind in Java.
> And if you dont want to download that jar from your buildfile you could the jar creation inline:
> - generate the code (<echo>)
> - compile (<javac>)
> - archive that (<jar>)
> - include that (<taskdef>)
>
> Via <script> you have access to the Ant API so it could be possible to do that this way.
> But I think, that's very hard ...
>
> Jan
>
>> -----Ursprüngliche Nachricht-----
>> Von: Al Le [mailto:[hidden email]]
>> Gesendet: Samstag, 3. Juni 2017 23:21
>> An: Ant Users List
>> Betreff: How to define a task with nested elements in Ant?
>>
>> Hello,
>>
>> is it possible to define a task in Ant which would have some nested
>> elements? Sort of like how it's done with the macrodef task but with a
>> bit structure.
>>
>> For example, I'd like to define a task which would be used as follows:
>>
>> <mytask>
>>       <paramA value="AAA1"/>
>>       <paramA value="AAA2"/>
>>       <paramB value="BBB"/>
>> </mytask>
>>
>>
>> This should internally translate to
>>
>> <java classname="some.Class">
>>       <arg value="-parameterA"/> <arg value="AAA1"/>
>>       <arg value="-parameterA"/> <arg value="AAA2"/>
>>       <arg value="-parameterB"/> <arg value="BBB"/> </java>
>>
>>
>> I.e. a <paramA> in the custom task should result in two args for the
>> java task.
>>
>> I know I could write a custom task in Java using an instance of the
>> java task in the implementation. But I'd like to know whether (and how)
>> it's possible to do this directly in Ant (possibly with javascript),
>> i.e.
>> without having to have some external JARs.
>>
>> Thank you for any hints!
>>
>> 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]
>
>

---------------------------------------------------------------------
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: How to define a task with nested elements in Ant?

Al Le
In reply to this post by Jan Matèrne (jhm)
Hrm...

It would be cool if there existed a task which would allow to construct
the translation of the task in Ant into some other existing tasks, e.g.
using XPath.

I.e. you'd

1. Define the syntax of a new task; not with 'attribute' and 'element'
(like in macrodef) but via e.g. XSD.

2. Define how instances of this task should translate into existing Ant
tasks, e.g. using XSL.

The first thing would be used by Ant to check whether the task is used
properly. The second thing would be used to execute such a task: first,
Ant would apply the XSL to the task instance which would yield a
fragment consisting of known ant tasks; then Ant would execute this
fragment.

Have such thought been played with in the Ant community? I think, it
would be a powerful tool to create custom tasks without having to code
in Java.

Just thinking aloud...



Am 03.06.2017 um 23:42 schrieb Jan Matèrne (jhm):

> I dont know any easy way.
> Simplest thing would be writing that kind in Java.
> And if you dont want to download that jar from your buildfile you could the jar creation inline:
> - generate the code (<echo>)
> - compile (<javac>)
> - archive that (<jar>)
> - include that (<taskdef>)
>
> Via <script> you have access to the Ant API so it could be possible to do that this way.
> But I think, that's very hard ...
>
> Jan
>
>> -----Ursprüngliche Nachricht-----
>> Von: Al Le [mailto:[hidden email]]
>> Gesendet: Samstag, 3. Juni 2017 23:21
>> An: Ant Users List
>> Betreff: How to define a task with nested elements in Ant?
>>
>> Hello,
>>
>> is it possible to define a task in Ant which would have some nested
>> elements? Sort of like how it's done with the macrodef task but with a
>> bit structure.
>>
>> For example, I'd like to define a task which would be used as follows:
>>
>> <mytask>
>>       <paramA value="AAA1"/>
>>       <paramA value="AAA2"/>
>>       <paramB value="BBB"/>
>> </mytask>
>>
>>
>> This should internally translate to
>>
>> <java classname="some.Class">
>>       <arg value="-parameterA"/> <arg value="AAA1"/>
>>       <arg value="-parameterA"/> <arg value="AAA2"/>
>>       <arg value="-parameterB"/> <arg value="BBB"/> </java>
>>
>>
>> I.e. a <paramA> in the custom task should result in two args for the
>> java task.
>>
>> I know I could write a custom task in Java using an instance of the
>> java task in the implementation. But I'd like to know whether (and how)
>> it's possible to do this directly in Ant (possibly with javascript),
>> i.e.
>> without having to have some external JARs.
>>
>> Thank you for any hints!
>>
>> 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]
>
>

---------------------------------------------------------------------
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: How to define a task with nested elements in Ant?

Jan Matèrne (jhm)
In reply to this post by Alexander Levin
You could play that way:
* use <xslt> to transform that peace into a 'valid Ant buildfile'
* use <ant> to call that generated file

Jan

> -----Ursprüngliche Nachricht-----
> Von: Alexander Levin [mailto:[hidden email]]
> Gesendet: Montag, 5. Juni 2017 01:39
> An: Ant Users List; Jan Matèrne (jhm)
> Betreff: Re: How to define a task with nested elements in Ant?
>
> Hrm...
>
> It would be cool if there existed a task which would allow to construct
> the translation of the task in Ant into some other existing tasks, e.g.
> using XPath.
>
> I.e. you'd
>
> 1. Define the syntax of a new task; not with 'attribute' and 'element'
> (like in macrodef) but via e.g. XSD.
>
> 2. Define how instances of this task should translate into existing Ant
> tasks, e.g. using XSL.
>
> The first thing would be used by Ant to check whether the task is used
> properly. The second thing would be used to execute such a task: first,
> Ant would apply the XSL to the task instance which would yield a
> fragment consisting of known ant tasks; then Ant would execute this
> fragment.
>
> Have such thought been played with in the Ant community? I think, it
> would be a powerful tool to create custom tasks without having to code
> in Java.
>
> Just thinking aloud...
>
>
>
> Am 03.06.2017 um 23:42 schrieb Jan Matèrne (jhm):
> > I dont know any easy way.
> > Simplest thing would be writing that kind in Java.
> > And if you dont want to download that jar from your buildfile you
> could the jar creation inline:
> > - generate the code (<echo>)
> > - compile (<javac>)
> > - archive that (<jar>)
> > - include that (<taskdef>)
> >
> > Via <script> you have access to the Ant API so it could be possible
> to do that this way.
> > But I think, that's very hard ...
> >
> > Jan
> >
> >> -----Ursprüngliche Nachricht-----
> >> Von: Al Le [mailto:[hidden email]]
> >> Gesendet: Samstag, 3. Juni 2017 23:21
> >> An: Ant Users List
> >> Betreff: How to define a task with nested elements in Ant?
> >>
> >> Hello,
> >>
> >> is it possible to define a task in Ant which would have some nested
> >> elements? Sort of like how it's done with the macrodef task but with
> >> a bit structure.
> >>
> >> For example, I'd like to define a task which would be used as
> follows:
> >>
> >> <mytask>
> >>       <paramA value="AAA1"/>
> >>       <paramA value="AAA2"/>
> >>       <paramB value="BBB"/>
> >> </mytask>
> >>
> >>
> >> This should internally translate to
> >>
> >> <java classname="some.Class">
> >>       <arg value="-parameterA"/> <arg value="AAA1"/>
> >>       <arg value="-parameterA"/> <arg value="AAA2"/>
> >>       <arg value="-parameterB"/> <arg value="BBB"/> </java>
> >>
> >>
> >> I.e. a <paramA> in the custom task should result in two args for the
> >> java task.
> >>
> >> I know I could write a custom task in Java using an instance of the
> >> java task in the implementation. But I'd like to know whether (and
> >> how) it's possible to do this directly in Ant (possibly with
> >> javascript), i.e.
> >> without having to have some external JARs.
> >>
> >> Thank you for any hints!
> >>
> >> 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]
> >
> >
>
> ---------------------------------------------------------------------
> 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: How to define a task with nested elements in Ant?

Al Le
Yes, indeed.

But then I'd probably rather translate the whole Ant script and then let
Ant process the result of the translation. I.e. the "trick" would be
absolutely transparent to Ant (it would be rather part of the build
infrastructure).

Not quite what I've thought of (in my dreams it should happen internally
in Ant), but technically possible :-)

Thank you for the quick responses!

AL


Am 05.06.2017 um 15:15 schrieb Jan Matèrne (jhm):

> You could play that way:
> * use <xslt> to transform that peace into a 'valid Ant buildfile'
> * use <ant> to call that generated file
>
> Jan
>
>> -----Ursprüngliche Nachricht-----
>> Von: Alexander Levin [mailto:[hidden email]]
>> Gesendet: Montag, 5. Juni 2017 01:39
>> An: Ant Users List; Jan Matèrne (jhm)
>> Betreff: Re: How to define a task with nested elements in Ant?
>>
>> Hrm...
>>
>> It would be cool if there existed a task which would allow to construct
>> the translation of the task in Ant into some other existing tasks, e.g.
>> using XPath.
>>
>> I.e. you'd
>>
>> 1. Define the syntax of a new task; not with 'attribute' and 'element'
>> (like in macrodef) but via e.g. XSD.
>>
>> 2. Define how instances of this task should translate into existing Ant
>> tasks, e.g. using XSL.
>>
>> The first thing would be used by Ant to check whether the task is used
>> properly. The second thing would be used to execute such a task: first,
>> Ant would apply the XSL to the task instance which would yield a
>> fragment consisting of known ant tasks; then Ant would execute this
>> fragment.
>>
>> Have such thought been played with in the Ant community? I think, it
>> would be a powerful tool to create custom tasks without having to code
>> in Java.
>>
>> Just thinking aloud...
>>
>>
>>
>> Am 03.06.2017 um 23:42 schrieb Jan Matèrne (jhm):
>>> I dont know any easy way.
>>> Simplest thing would be writing that kind in Java.
>>> And if you dont want to download that jar from your buildfile you
>> could the jar creation inline:
>>> - generate the code (<echo>)
>>> - compile (<javac>)
>>> - archive that (<jar>)
>>> - include that (<taskdef>)
>>>
>>> Via <script> you have access to the Ant API so it could be possible
>> to do that this way.
>>> But I think, that's very hard ...
>>>
>>> Jan
>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: Al Le [mailto:[hidden email]]
>>>> Gesendet: Samstag, 3. Juni 2017 23:21
>>>> An: Ant Users List
>>>> Betreff: How to define a task with nested elements in Ant?
>>>>
>>>> Hello,
>>>>
>>>> is it possible to define a task in Ant which would have some nested
>>>> elements? Sort of like how it's done with the macrodef task but with
>>>> a bit structure.
>>>>
>>>> For example, I'd like to define a task which would be used as
>> follows:
>>>>
>>>> <mytask>
>>>>        <paramA value="AAA1"/>
>>>>        <paramA value="AAA2"/>
>>>>        <paramB value="BBB"/>
>>>> </mytask>
>>>>
>>>>
>>>> This should internally translate to
>>>>
>>>> <java classname="some.Class">
>>>>        <arg value="-parameterA"/> <arg value="AAA1"/>
>>>>        <arg value="-parameterA"/> <arg value="AAA2"/>
>>>>        <arg value="-parameterB"/> <arg value="BBB"/> </java>
>>>>
>>>>
>>>> I.e. a <paramA> in the custom task should result in two args for the
>>>> java task.
>>>>
>>>> I know I could write a custom task in Java using an instance of the
>>>> java task in the implementation. But I'd like to know whether (and
>>>> how) it's possible to do this directly in Ant (possibly with
>>>> javascript), i.e.
>>>> without having to have some external JARs.
>>>>
>>>> Thank you for any hints!
>>>>
>>>> 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]
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> 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]
>
>

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

Loading...