My first plugin defines some custom components, shored with other plugins.
It is used from other projects as a maven extension.

My second plugin uses this component

My main project uses the 2d plugin and has the 1rst one set as extension.
The second plugin cannot initialize (classloader issue). Seems the
UnArchiver class loaded in 2d plugin isn't same as the ZipArchiver  ->
UnArchiver loaded by the first plugin.

I think plugins use separate classloaders :


Maven project classloader
|
----- 1rst plugin classloader   [ ZipArchiver -> UnArchiver ] as <extension>
|      -> custom component added to plexus
|
 ----- 2nd plugin classloader  [ Unarchiver ]

With such config, ZipArchiver is not assignable to UnArchiver.

I don't see any way for a plugin to expose extensions to other plugins...
This would require the extension classpath to be added to the project
classloader.

 Nico.



2007/10/17, Andrew Williams <[EMAIL PROTECTED]>:
>
> Why are you trying to load the dependencies of another plugin instead
> of specifying them yourself?
>
> Andy
>
> On 17 Oct 2007, at 16:31, nicolas de loof wrote:
>
> > Not sure to understand what you would like me to see in the dependency
> > plugin.
> >
> > I get my unarchiver using plexus dependency mecanism :
> >
> >     /**
> >      * @parameter expression="${
> > component.org.codehaus.plexus.archiver.UnArchiver#jsar}"
> >      * @required
> >      */
> >     private UnArchiver archiver;
> >
> > With my other plugin defining a component in META-INF/plexus.xml :
> >
> >     <component>
> >       <role>org.codehaus.plexus.archiver.UnArchiver</role>
> >       <role-hint>jsar</role-hint>
> >       <implementation>org.codehaus.plexus.archiver.zip.ZipUnArchiver
> > </implementation>
> >     </component>
> >
> >
> > This worked as expected when the unarchiver was defined in the
> > plugin that
> > uses the archiver, but not if the unarchiver is defined bu another
> > plugin. I
> > supose those plugins have separate classloaders.
> >
> > Any workaround ?
> >
> >
> > 2007/10/17, Brian E. Fox <[EMAIL PROTECTED]>:
> >>
> >> Take a look at the dependency plugin for use of the unarchiver.
> >>
> >> -----Original Message-----
> >> From: nicolas de loof [mailto:[EMAIL PROTECTED]
> >> Sent: Wednesday, October 17, 2007 10:33 AM
> >> To: Maven Developers List
> >> Subject: plexus classloader issue ?
> >>
> >> Hello,
> >>
> >> I've created a plugin that requires a plexus UnArchiver as
> >> @component.
> >> The expected Unarchiver is declared by another plugin, configured
> >> as an
> >> extensions.
> >>
> >> All works fine when unit-testing the plugin using maven-test-harness,
> >> but
> >> when I try to use it from another project (it test) I get this
> >> error :
> >>
> >> Can not set org.codehaus.plexus.archiver.UnArchiver field
> >> org.codehaus.mojo.javascript.AbstractCopyDependenciesMojo.archiver to
> >> org.codehaus.plexus.archiver.zip.ZipUnArchiver
> >>
> >> ZipUnArchiver implements UnArchiver ! So this seems to be a
> >> classloader
> >> issue. Do you have any idea what can be wrong in my config, or any
> >> way
> >> to
> >> investigate ?
> >>
> >> Nico.
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to