Indeed! Thanks :-)

So, for the summary, here are the steps that provided my solution:

  1) in the pom, added maven-inherit-plugin, as described in the plugin
documentation.

  2) in the mojo, in my case I needed to extend a goal with a different
name:
/**
 * @extendsPlugin maven-compiler-plugin
 * @extendsGoal compile
 * @goal custom-compile
 * @phase compile
 */
public class CustomCompileMojo extends CompilerMojo { //...

  3) in the pom, the dependency requires a type to be specified:
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <type>maven-plugin</type>
      <version>2.0.2</version>
    </dependency>

I'm thinking all of this (a summary) would be good as an item in the "Maven
Plugins Cookbook"... something like "How to extend an existing plugin?"
What's the accepted way of getting it up there? I wouldnt mind writing it.

W.

On Tue, Apr 29, 2008 at 6:49 PM, VELO <[EMAIL PROTECTED]> wrote:

> Try add type to dependency:
> <type>maven-plugin</type>
>
>
> VELO
>
>
> On Tue, Apr 29, 2008 at 1:46 PM, walid joseph Gedeon <[EMAIL PROTECTED]>
> wrote:
>
> > It seems to want to do what I need... but I can't seem to get rid of
> > this error:
> >
> > [ERROR] BUILD ERROR
> > [INFO]
> > ------------------------------------------------------------------------
> > [INFO] maven-compiler-plugin plugin is not a dependency
> >
> > eventhough I do have it in my pom...
> >
> >     <dependency>
> >       <groupId>org.apache.maven.plugins</groupId>
> >       <artifactId>maven-compiler-plugin</artifactId>
> >       <version>2.0.2</version>
> >     </dependency>
> >
> > Looking at the code, it seems to also want to allow "compiler", but
> > tried that too with no luck...
> > Still digging, but if anyone has an idea, all hints are appreciated :-)
> >
> > W
> >
> >
> > On Tue, Apr 29, 2008 at 6:39 PM, VELO <[EMAIL PROTECTED]> wrote:
> >
> > > I use it, works!
> > >
> > > VELO
> > >
> > > On Tue, Apr 29, 2008 at 11:45 AM, Benoit Decherf <
> > > [EMAIL PROTECTED]>
> > > wrote:
> > >
> > > > Here is the plugin:
> > > > http://www.ops4j.org/projects/pax/construct/maven-inherit-plugin/
> > > >
> > > > Benoit
> > > >
> > > >
> > > > Brian E. Fox wrote:
> > > >
> > > > > Plugins can't really be extended. What is most likely happening is
> > > that
> > > > > the metadata that tells plexus what to inject is not included in
> > > your
> > > > > plugin. There is a plugin/tool out there that supposedly allows
> > > you to
> > > > > extend plugins by merging the metadata, but I forget the name.
> > > > >
> > > > > -----Original Message-----
> > > > > From: walid joseph Gedeon [mailto:[EMAIL PROTECTED] Sent:
> > > Tuesday,
> > > > > April 29, 2008 10:37 AM
> > > > > To: Maven Developers List
> > > > > Subject: Can plugins be extended?
> > > > >
> > > > > Hello all,
> > > > >   After failing to customize the compiler pluging (by passing
> > > > > <compileSourceRoots /> in the maven-compiler-plugin <configuration
> > > />);
> > > > > I've
> > > > > went onto trying to extend the maven-compiler-plugin CompileMojo
> > > to just
> > > > > set
> > > > > that variable.
> > > > >
> > > > > It looks like I've missed something: the injected parameters of
> > > the
> > > > > super
> > > > > classes are not being set (e.g. the parameter compilerId, or the
> > > > > component
> > > > > compilerManager in AbstractCompilerMojo are null).
> > > > > Is there a flag that enables injection of parameters in super
> > > classes?
> > > > > Or is
> > > > > the issue something else?
> > > > >
> > > > > Thanks :-)
> > > > > Walid.
> > > > >
> > > > > Note: a component definition maps the custom-compile goal to the
> > > > > <compile />
> > > > > phase.
> > > > >
> > > > > o====x maven-customcompile-plugin Mojo: x====o
> > > > > /**
> > > > > * @goal custom-compile
> > > > > * @phase compile
> > > > > * @requiresDependencyResolution runtime
> > > > > */
> > > > > public class CustomCompilerMojo extends CompilerMojo {
> > > > >   // ...
> > > > >
> > > > >   /**
> > > > >    * @parameter
> > > > >    */
> > > > >   private List<String> compileSourceRoots;
> > > > >
> > > > >   protected List<String> getCompileSourceRoots()
> > > > >   {
> > > > >       return compileSourceRoots;
> > > > >   }
> > > > >
> > > > >   public void execute() throws MojoExecutionException,
> > > > > CompilationFailureException
> > > > >   {
> > > > >       super.execute();
> > > > >   }
> > > > > }
> > > > >
> > > > > o====x Project POM: x====o
> > > > > <!-- ... -->
> > > > >  <build>
> > > > >    <plugins>
> > > > >      <plugin>
> > > > >        <groupId>fr.gedeon</groupId>
> > > > >        <artifactId>maven-customcompile-plugin</artifactId>
> > > > >        <extensions>true</extensions>
> > > > >        <configuration>
> > > > >          <compileSourceRoots>
> > > > >            <directory>Dev/src/java</directory>
> > > > >          </compileSourceRoots>
> > > > >        </configuration>
> > > > >      </plugin>
> > > > >    </plugins>
> > > > >  </build>
> > > > >
> > > > > o====x Partial Trace: x====o
> > > > > [DEBUG] Configuring mojo
> > > > > 'fr.gedeon:maven-customcompile-plugin:1.0-SNAPSHOT:custom-compile'
> > > -->
> > > > > [DEBUG]   (f) compileSourceRoots = [Dev/src/java]
> > > > > [DEBUG]   (f) project =
> > > [EMAIL PROTECTED]
> > > > > [DEBUG] -- end configuration --
> > > > > [INFO] [bem:custom-compile]
> > > > > [DEBUG] Using compiler 'null'.
> > > > >
> > > > >
> > > > > >      ^ this is from getLog().debug( "Using compiler '" +
> > > compilerId +
> > > > > >
> > > > > >
> > > > > "'." );
> > > > >
> > > > >
> > > > > >        in AbstractCompilerMojo
> > > > > >
> > > > > >
> > > > > [INFO]
> > > > >
> > > ------------------------------------------------------------------------
> > > > > [ERROR] FATAL ERROR
> > > > > [INFO]
> > > > >
> > > ------------------------------------------------------------------------
> > > > > [INFO] null
> > > > > [INFO]
> > > > >
> > > ------------------------------------------------------------------------
> > > > > [DEBUG] Trace
> > > > > java.lang.NullPointerException
> > > > >        at
> > > > >
> > > > >
> > > org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:267)
> > > > >
> > > > >
> > > > > >         ^ I suppose this is compiler =
> > > compilerManager.getCompiler(
> > > > > >
> > > > > >
> > > > > compilerId );
> > > > >
> > > > >
> > > > > >           with compilerManager = null
> > > > > >
> > > > > >
> > > > >        at
> > > > >
> > > org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
> > > > >        at
> > > > >
> > > org.apache.maven.plugin.CompileBemMojo.execute(CompileBemMojo.java:37)
> > > > > ...
> > > > >
> > > > >
> > > >
> > > >
> > >
> >
> >
>

Reply via email to