Yes, in fact the library I'm using (Spring-beandoc) defaults to the context classloader for looking up the mapping files. Since the context classloader is by default set to the application classloader, the plug-in is responsible for switching the classloader at runtime before calling the library.
This holds also true when calling other third-party libraries such as JDBC, Xerces, etc... I don't know how maven2 works internally, but wouldn't it be a good idea to let maven2 internally switch the context classloader to the plugin classloader before the plug-in is called ? Mojo mojo = .... final Thread current = Thread.currentThread(); final ClassLoader oldLoader = current.getContextClassLoader(); try { current.setContextClassLoader(mojo.getClass().getClassLoader()); mojo.execute(); } catch (Exception e) { throw new MavenReportException("Unable to execute mojo: " + e.getMessage(), e); } finally { current.setContextClassLoader(oldLoader); } Regards, Mario. -----Original Message----- From: Brett Porter [mailto:[EMAIL PROTECTED] Sent: Fri 8/19/2005 12:41 PM To: Maven Users List Subject: Re: [m2] plugin classpath question Was that necessary? I assume you now have BeanDocClient as a dep on your plugin, which should make the classloader current anyway, without switching the context class loader. - Brett On 8/19/05, Van Steenberghe Mario (GFDI) <[EMAIL PROTECTED]> wrote: > Thanks. > > In fact my plugin calls a library that loads some resources inside these > libraries, so I had to switch the context classloader as follows: > > public void executeReport(final Locale locale) throws MavenReportException { > final Thread current = Thread.currentThread(); > final ClassLoader oldLoader = current.getContextClassLoader(); > > try { > current.setContextClassLoader(BeanDocClient.class.getClassLoader()); > > // ... call library code here ... > } > catch (Exception e) { > throw new MavenReportException("Unable to generate beandoc: " + > e.getMessage(), e); > } > finally { > current.setContextClassLoader(oldLoader); > } > } > > Regards, > Mario. > > -----Original Message----- > From: Brett Porter [mailto:[EMAIL PROTECTED] > Sent: Fri 8/19/2005 11:01 AM > To: Maven Users List > Subject: Re: [m2] plugin classpath question > > The plugin gets the plugin's dependencies, not the project's. > > Also, it uses a separate class loader, so the system classpath only > reflects what was used to bootstrap Maven (classworlds). > > You can get the JARs for the project's artifacts using the > ${project.artifacts} expression. > > - Brett > > On 8/19/05, Van Steenberghe Mario (GFDI) <[EMAIL PROTECTED]> wrote: > > Hello, > > > > Is there anyone who knows how the classpath is defined when a maven2 > > plug-in is run ? > > > > I expected that all the dependent jars, defined in my POM should be on the > > classpath, but when I print out the classpath inside my plug-in, I get: > > > > /** > > * @see > > org.apache.maven.reporting.AbstractMavenReport#executeReport(java.util.Locale) > > */ > > > > public void executeReport(final Locale locale) throws MavenReportException { > > ... > > getLog().info(" - classpath : " + > > System.getProperty("java.class.path")); > > ... > > } > > > > output: > > > > - classpath : /opt/maven2-SNAPSHOT/core/boot/classworlds-1.1-alpha-2.jar > > > > > > Thanks, > > Mario. > > > > > > --------------------------------------------------------------------- > 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] > > --------------------------------------------------------------------- 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]