brett       2005/04/08 02:54:19

  Modified:    maven-core/src/main/java/org/apache/maven/lifecycle Tag:
                        MAVEN-2_0-ALPHA_1-branch
                        DefaultLifecycleExecutor.java
  Log:
  need to look for pluginManagement sections in the project, parent and super 
model to be able to have versions other than 1.0-SNAPSHOT for non configured 
plugins.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.31.2.1  +84 -21    
maven-components/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
  
  Index: DefaultLifecycleExecutor.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java,v
  retrieving revision 1.31
  retrieving revision 1.31.2.1
  diff -u -r1.31 -r1.31.2.1
  --- DefaultLifecycleExecutor.java     24 Mar 2005 13:05:36 -0000      1.31
  +++ DefaultLifecycleExecutor.java     8 Apr 2005 09:54:19 -0000       1.31.2.1
  @@ -16,14 +16,17 @@
    * limitations under the License.
    */
   
  +import org.apache.maven.MavenConstants;
   import org.apache.maven.artifact.handler.ArtifactHandler;
   import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
   import org.apache.maven.artifact.resolver.ArtifactResolver;
   import org.apache.maven.execution.MavenExecutionResponse;
   import org.apache.maven.execution.MavenSession;
   import org.apache.maven.model.Goal;
  +import org.apache.maven.model.Model;
   import org.apache.maven.model.Plugin;
   import org.apache.maven.model.PluginManagement;
  +import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
   import org.apache.maven.monitor.event.EventDispatcher;
   import org.apache.maven.monitor.event.MavenEvents;
   import org.apache.maven.plugin.AbstractPlugin;
  @@ -31,11 +34,15 @@
   import org.apache.maven.plugin.PluginManager;
   import org.apache.maven.plugin.descriptor.MojoDescriptor;
   import org.apache.maven.plugin.descriptor.PluginDescriptor;
  +import org.apache.maven.project.DefaultMavenProjectBuilder;
   import org.apache.maven.project.MavenProject;
   import org.apache.maven.project.MavenProjectBuilder;
   import org.codehaus.plexus.logging.AbstractLogEnabled;
   import org.codehaus.plexus.logging.Logger;
  +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
   
  +import java.io.InputStreamReader;
  +import java.net.URL;
   import java.util.Date;
   import java.util.HashMap;
   import java.util.Iterator;
  @@ -49,7 +56,7 @@
    */
   public class DefaultLifecycleExecutor
       extends AbstractLogEnabled
  -    implements LifecycleExecutor
  +    implements LifecycleExecutor, Initializable
   {
       // ----------------------------------------------------------------------
       // Components
  @@ -65,6 +72,9 @@
   
       private List phases;
   
  +    // TODO: remove
  +    private Model superModel;
  +
       // ----------------------------------------------------------------------
       //
       // ----------------------------------------------------------------------
  @@ -114,14 +124,6 @@
                           artifactHandler.additionalPlugin() );
   
                       injectHandlerPluginConfiguration( project, 
additionalPluginGroupId, additionalPluginArtifactId );
  -
  -                    Plugin plugin = new Plugin();
  -
  -                    plugin.setGroupId( additionalPluginGroupId );
  -
  -                    plugin.setArtifactId( additionalPluginArtifactId );
  -
  -                    processPluginPhases( plugin, session, phaseMap );
                   }
               }
   
  @@ -161,33 +163,73 @@
   
       private void injectHandlerPluginConfiguration( MavenProject project, 
String groupId, String artifactId )
       {
  -        PluginManagement pluginManagement = project.getPluginManagement();
  +        // TODO: this is a bit of a hack to get the version from plugin 
management - please fix
   
  -        if ( pluginManagement != null )
  -        {
  -            List pluginList = pluginManagement.getPlugins();
  +        Plugin plugin = findPlugin( project.getPlugins(), groupId, 
artifactId );
   
  -            Plugin handlerPlugin = null;
  +        if ( plugin == null )
  +        {
  +            plugin = new Plugin();
  +            plugin.setGroupId( groupId );
  +            plugin.setArtifactId( artifactId );
  +            project.addPlugin( plugin );
  +        }
   
  -            for ( Iterator it = pluginList.iterator(); it.hasNext(); )
  +        if ( plugin.getVersion() == null )
  +        {
  +            while ( project != null )
               {
  -                Plugin plugin = (Plugin) it.next();
  +                PluginManagement pluginManagement = 
project.getPluginManagement();
   
  -                if ( groupId.equals( plugin.getGroupId() ) && 
artifactId.equals( plugin.getArtifactId() ) )
  +                if ( pluginManagement != null )
                   {
  -                    handlerPlugin = plugin;
  +                    Plugin management = findPlugin( 
pluginManagement.getPlugins(), groupId, artifactId );
  +                    if ( management != null && management.getVersion() != 
null )
  +                    {
  +                        plugin.setVersion( management.getVersion() );
  +                        break;
  +                    }
  +                }
  +                project = project.getParent();
  +            }
  +
  +            if ( plugin.getVersion() == null )
  +            {
  +                PluginManagement pluginManagement = 
superModel.getBuild().getPluginManagement();
   
  -                    break;
  +                if ( pluginManagement != null )
  +                {
  +                    Plugin management = findPlugin( 
pluginManagement.getPlugins(), groupId, artifactId );
  +                    if ( management != null && management.getVersion() != 
null )
  +                    {
  +                        plugin.setVersion( management.getVersion() );
  +                    }
                   }
               }
   
  -            if ( handlerPlugin != null )
  +            if ( plugin.getVersion() == null )
               {
  -                project.addPlugin( handlerPlugin );
  +                // TODO: this has probably supplanted the default in the 
plugin manager
  +                plugin.setVersion( "1.0-SNAPSHOT" );
               }
           }
       }
   
  +    private static Plugin findPlugin( List plugins, String groupId, String 
artifactId )
  +    {
  +        Plugin plugin = null;
  +
  +        for ( Iterator i = plugins.iterator(); i.hasNext() && plugin == 
null; )
  +        {
  +            Plugin p = (Plugin) i.next();
  +            if ( groupId.equals( p.getGroupId() ) && artifactId.equals( 
p.getArtifactId() ) )
  +            {
  +                plugin = p;
  +            }
  +        }
  +        return plugin;
  +    }
  +
       // TODO: don't throw Exception
       private void processPluginConfiguration( MavenProject project, 
MavenSession mavenSession, Map phaseMap )
           throws Exception
  @@ -319,6 +361,19 @@
   
           if ( mojoDescriptor == null )
           {
  +            String groupId = AbstractPlugin.getDefaultPluginGroupId();
  +
  +            String pluginId = task;
  +
  +            if ( pluginId.indexOf( ":" ) > 0 )
  +            {
  +                pluginId = pluginId.substring( 0, pluginId.indexOf( ":" ) );
  +            }
  +
  +            String artifactId = AbstractPlugin.getDefaultPluginArtifactId( 
pluginId );
  +
  +            injectHandlerPluginConfiguration( session.getProject(), groupId, 
artifactId );
  +
               pluginManager.verifyPluginForGoal( task, session );
   
               mojoDescriptor = pluginManager.getMojoDescriptor( task );
  @@ -401,4 +456,12 @@
       {
           return phases;
       }
  +
  +    public void initialize()
  +        throws Exception
  +    {
  +        // TODO: get rid of this and the interface...
  +        URL url = DefaultMavenProjectBuilder.class.getResource( "pom-" + 
MavenConstants.MAVEN_MODEL_VERSION + ".xml" );
  +        superModel = new MavenXpp3Reader().read( new InputStreamReader( 
url.openStream() ) );
  +    }
   }
  \ No newline at end of file
  
  
  

Reply via email to