Not really....

when you flag your plugin as providing extensions, then it gets included
into the classloader which is used to look for LifecycleMapping definitions.

The default classloader already has the mapping files for jar/ejb/etc...

So it's no strictly speaking hard coded... more loosely coupled using
similar to the java SPI mechanism... but you can think of it as hard coded
effectively.... ;-)

2008/9/26 陈思淼 <[EMAIL PROTECTED]>

> I got your suggestion, the source code is here. I can use this way to
> generate a new LifecycleMapping.
> but I don't understand why jar/ejb/rar/war packaging are not use this way,
> are they hard code in the Maven-Core project?
>
>  private Object findExtension( MavenProject project, String role, String
> > roleHint, Settings settings,
> >
>                                  ArtifactRepository localRepository )
> >
>        throws LifecycleExecutionException, PluginNotFoundException
> >
>    {
> >
>        Object pluginComponent = null;
> >
>
> >         for ( Iterator i = project.getBuildPlugins().iterator();
> > i.hasNext() && pluginComponent == null; )
> >
>        {
> >
>            Plugin plugin = (Plugin) i.next();
> >
>
> >             if ( plugin.isExtensions() )
> >
>            {
> >
>                verifyPlugin( plugin, project, settings, localRepository );
> >
>
> >                 // TODO: if moved to the plugin manager we already have
> the
> > descriptor from above and so do can lookup the container directly
> >
>                try
> >
>                {
> >
>                    pluginComponent = pluginManager.getPluginComponent(
> > plugin, role, roleHint );
> >
>                }
> >
>                catch ( ComponentLookupException e )
> >
>                {
> >
>                    getLogger().debug( "Unable to find the lifecycle
> > component in the extension", e );
> >
>                }
> >
>                catch ( PluginManagerException e )
> >
>                {
> >
>                    throw new LifecycleExecutionException(
> >
>                        "Error getting extensions from the plugin '" +
> > plugin.getKey() + "': " + e.getMessage(), e );
> >
>                }
> >
>            }
> >
>        }
> >
>        return pluginComponent;
> >
>    }
> >
>
> 2008/9/26 Stephen Connolly <[EMAIL PROTECTED]>
>
> > You need to mark your plugin as an extension
> >
> > something like
> > <project>
> >  <groupId>test</groupId>
> >  <artifactId>test</artifactId>
> >  <version>0.1-SNAPSHOT</version>
> >  <pachaking>chensimiao</packaging>
> > <build>
> >  <plugins>
> >    <plugin>
> >      <groupId>com.gmail.chensimiao</groupId>
> >      <artifactId>chensimiao-maven-plugin</artifactId>
> >      <version>1.0-SNAPSHOT</version>
> >      <extension>true</extension>
> >    </plugin>
> > </build>
> > </project>
> >
> > that way maven knows that it should look in
> > com.gmail.chensimiao:chensimiao-maven-plugin:1.0-SNAPSHOT:jar for the
> > /META-INF/org.apache.maven.lifecycle.mapping.LifecycleMapping.chensimiao
> > file
> >
> > On 26 September 2008 09:25, 陈思淼 <[EMAIL PROTECTED]> wrote:
> >
> > > I traced the source core of maven and that the Maven-core will look up
> > > for componentManagerManager by the key
> > > "org.apache.maven.lifecycle.mapping.LifecycleMapping"+packaging_type,Im
> > > sure
> > > the default packaging type ,jar,ear,rar for example, have register to
> the
> > > PlexusContainer. but I don't know how and when to inject
> > > that LifecycleMapping componentManager to the container? and how I I
> > inject
> > > my own LifecycleMapping componentManager to the container.
> > > Is there Maven plugin developer can tell me some detail about this?
> > > Thank you very Much.
> > >
> > >
> > > 2008/9/26 <[EMAIL PROTECTED]>
> > >
> > > > I think you will find the Repo infos there:
> > > >
> > > > http://plexus.codehaus.org/source-repository.html
> > > >
> > > >
> > > > - jens
> > > >
> > > >
> > > >
> > > > >I want to define a new packaging type called jcar to package my own
> > > > project.
> > > > >i read the maven source , and find the maven-core use
> > > > >PlexusContainer.lookup() to find a new LifecycleMapping
> > > > >to, can anybody tell me how that process works? and where to
> download
> > > > >PlexusContainer source code so i can read
> > > > >the detail of it.
> > > > >thank you!
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > >
> >
>

Reply via email to