ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Reilly" <peter.kitt.rei...@gmail.com>
Subject Re: Custom element for jar task.
Date Thu, 11 Sep 2008 13:44:46 GMT
Opps, yes you are correct.
the code is addConfiguredService() and not addConfigured().

You will need to use the undocumented ant-type magic attribute:

<jar ..>
     <fileset dir="${src.dir}"/>
      <service ant-type="autoservice" type="ag.core.AGApp"
classpath="${build.dir}"/>
</jar>

Peter

On Thu, Sep 11, 2008 at 2:27 PM, John5342 <john5342@googlemail.com> wrote:
> Hi,
>
>>You need to do a <typedef> and not a <taskdef> to define the new type.
> I am already using a typedef.
>
> As in my original email:
>
> <target name="autoservice.taskdef" depends="autoservice.compile">
>   <typedef name="autoservice" classname="ag.tools.ant.AutoService"
> classpath="${autoservice.classes}"/>
> </target>
>
> <target name="jar" depends="autoservice.taskdef,project.compile">
>   <jar destfile="${build.dir}">
>      <fileset dir="${src.dir}"/>
>      <autoservice type="ag.core.AGApp" classpath="${build.dir}"/>
>   </jar>
>  </target>
>
> Any more ideas?
>
> Thanks, John
>
>
> 2008/9/11 Peter Reilly <peter.kitt.reilly@gmail.com>
>
>> You need to do a <typedef> and not a <taskdef> to define the new type.
>>
>> Looking at the code:
>>
>>    Jar: public void addConfiguredService(Service service) {}
>>
>> the new type should work.
>>
>> The reason that <taskdef> does not work is that the Sevice class does
>> not extend Task
>> and using <taskdef> will cause ant to use a proxy class, which will
>> not match the addConfigured signature.
>>
>>
>> Peter
>>
>>
>> On Thu, Sep 11, 2008 at 1:03 PM, John5342 <john5342@googlemail.com> wrote:
>> > Hi,
>> >
>> > Thanks for the reply.
>> >
>> >>Does it produce a classpath??
>> >>
>> >>What do you expect should the jar task do with the element?
>> >
>> > I explained in my first email but will clarify.
>> >
>> > My aim is to create an enhanced service element for the jar task. I
>> > subclassed the Service class because i know the jar task already knows
>> what
>> > to do with the service element. My AutoService subclass then has an extra
>> > attribute (naed classpath) that AutoService will search for possible
>> > providers. For each provider AutoService finds I am simply calling
>> > Service.addConfiguredProvider().
>> >
>> > From what i understand from documentation is that with a few exceptions
>> with
>> > type conversion (such as String to Path and such) elements cause the
>> > appropriate type (known from taskdef and typedef) to be constructed and
>> > added to the first addXX function that can handle the type. My hope was
>> that
>> > since AutoService is a subclass of Service (and therefore looks and acts
>> the
>> > same from the jar tasks point of view) everything would just work.
>> >
>> > Have i misunderstood how ant works?
>> >
>> > Is there a way around this?
>> >
>> > Is the best way to just create a specialised jar task instead?
>> >
>> > Is easy enough to create a new jar task instead but my approach if it
>> works
>> > just seemed cleaner.
>> >
>> >
>> > And in case it makes any difference:
>> >>What i understood:
>> >>You created a task called autoservice.
>> > Service from which i inherit doesnt actually implement Task so doesnt
>> seem
>> > to be a task as such.
>> >
>> > Thanks, John
>> >
>> > 2008/9/11 Knuplesch, Juergen <Juergen.Knuplesch@icongmbh.de>
>> >
>> >> Hello,
>> >>
>> >>
>> >> The error you get tells simply, that your created task is not an allowed
>> >> subelement of the jar-task.
>> >> You run into a syntax error.
>> >> It is not possible to change the jar task (or any other task) by adding
>> >> your own tasks as subelements.
>> >>
>> >> Probably you have to write your own jar-task, that will understand your
>> >> subelement.
>> >>
>> >> What i understood:
>> >> You created a task called autoservice.
>> >>
>> >> What does this task do?
>> >> Does it produce a classpath??
>> >>
>> >> What do you expect should the jar task do with the element?
>> >>
>> >> Tell us and then you will get probably some hints to do what you want.
>> >>
>> >> Then you have to write your own Ant-Task doing the stuff you want.
>> >>
>> >> --
>> >> J├╝rgen Knuplesch
>> >>
>> >> -----Urspr├╝ngliche Nachricht-----
>> >> Von: John5342 [mailto:john5342@googlemail.com]
>> >> Gesendet: Mittwoch, 10. September 2008 20:08
>> >> An: user@ant.apache.org
>> >> Betreff: Custom element for jar task.
>> >>
>> >> Hi,
>> >>
>> >> I have a rapidly evolving project which contains a large and varying
>> number
>> >> of service providers. I was hoping to create to create a more
>> specialized
>> >> version of the service element that automatically scans for providers in
>> a
>> >> give classpath but have run into some trouble asuming what i want to do
>> is
>> >> even possible.
>> >>
>> >> I started off by subclassing org.apache.tools.ant.types.spi.Service
>> which
>> >> provides the current service element and added setClassPath() and some
>> lgic
>> >> to automatically scan the given classpath for any classes implementing
>> the
>> >> the given type and add add appropriate providers to Service. I then
>> added
>> >> the following to my build.xml:
>> >>
>> >> <target name="autoservice.taskdef" depends="autoservice.compile">
>> >>    <typedef name="autoservice" classname="ag.tools.ant.AutoService"
>> >> classpath="${autoservice.classes}"/>
>> >> </target>
>> >>
>> >> <target name="jar" depends="autoservice.taskdef,project.compile">
>> >>    <jar destfile="${build.dir}">
>> >>      <fileset dir="${src.dir}"/>
>> >>      <autoservice type="ag.core.AGApp" classpath="${build.dir}"/>
>> >>    </jar>
>> >> </target>
>> >>
>> >>
>> >> autoservice.taskdef runs fine but when i get to the jar target i get the
>> >> following error:
>> >>
>> >> /Projects/ag/build.xml:103: jar doesn't support the nested "autoservice"
>> >> element.
>> >>
>> >> Is what i am trying to do even possible? and if so any ideas where to go
>> >> from here?
>> >>
>> >> Thanks, John
>> >>
>> >> ---------------------------------------------------------------------
>> >> 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
>>
>>
>

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


Mime
View raw message