Ah, I wasn't aware of that... thanks for the heads up Jörg...

I'm wondering why the parameter compileSourceRoots is defined as @readonly
in CompilerMojo... is there a reason?

On Tue, Apr 29, 2008 at 8:05 PM, Jörg Schaible <
[EMAIL PROTECTED]> wrote:

>
> But you have to be aware of the downside: You cannot upgrade the
> compiler-plugin anymore without creating a new version of your plugin. Any
> plugin is loaded once and the first one wins. Nice effects in reactor builds
> ;-)
>
> walid joseph Gedeon wrote:
> > 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(AbstractC
> > ompilerMojo.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)
> >>>>>> ...
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

Reply via email to