According to
http://maven.apache.org/guides/mini/guide-maven-classloading.html, using an
extension should work... I'll investigtate more tomorow.

2007/10/17, nicolas de loof <[EMAIL PROTECTED]>:
>
> 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