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