You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/04/01 02:36:03 UTC

svn commit: r760747 - in /maven/components/branches/MNG-2766: maven-core/src/main/java/org/apache/maven/ maven-core/src/main/java/org/apache/maven/execution/ maven-core/src/main/java/org/apache/maven/lifecycle/ maven-core/src/main/java/org/apache/maven...

Author: jvanzyl
Date: Wed Apr  1 00:36:02 2009
New Revision: 760747

URL: http://svn.apache.org/viewvc?rev=760747&view=rev
Log:
o another pass at the plugin manager

Modified:
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java
    maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java
    maven/components/branches/MNG-2766/maven-project/src/main/java/org/apache/maven/project/MavenProject.java

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Wed Apr  1 00:36:02 2009
@@ -144,7 +144,7 @@
 
         try
         {                        
-            session = new MavenSession( request, projects );
+            session = new MavenSession( container, request, projects );
             
             result.setReactorManager( session.getReactorManager() );            
         }

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java Wed Apr  1 00:36:02 2009
@@ -29,6 +29,7 @@
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuilderConfiguration;
 import org.apache.maven.settings.Settings;
+import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.util.dag.CycleDetectedException;
 
 /**
@@ -37,6 +38,8 @@
  */
 public class MavenSession
 {
+    private PlexusContainer container;
+    
     private ReactorManager reactorManager;
 
     private MavenExecutionRequest request;
@@ -49,15 +52,16 @@
         this.request = request;
     }
 
-    public MavenSession( MavenExecutionRequest request, MavenProject project )
+    public MavenSession( PlexusContainer container, MavenExecutionRequest request, MavenProject project )
         throws CycleDetectedException, DuplicateProjectException
     {
-        this( request, Arrays.asList( new MavenProject[]{ project } ) );        
+        this( container, request, Arrays.asList( new MavenProject[]{ project } ) );        
     }    
 
-    public MavenSession( MavenExecutionRequest request, List<MavenProject> projects )
+    public MavenSession( PlexusContainer container, MavenExecutionRequest request, List<MavenProject> projects )
         throws CycleDetectedException, DuplicateProjectException
     {
+        this.container = container;
         this.request = request;
         this.reactorManager = new ReactorManager( projects, request.getReactorFailureBehavior() );
         this.currentProject = projects.get( 0 );
@@ -73,6 +77,11 @@
         return reactorManager.getPluginContext( pluginDescriptor, project );
     }
     
+    public PlexusContainer getContainer()
+    {
+        return container;
+    }
+
     public ArtifactRepository getLocalRepository()
     {
         return request.getLocalRepository();

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Wed Apr  1 00:36:02 2009
@@ -403,11 +403,7 @@
         {
             throw new LifecycleExecutionException( "Error loading MojoDescriptor.", e );
         }        
-        
-        // this has been simplified from the old code that injected the plugin management stuff, since
-        // pluginManagement injection is now handled by the project method.
-        project.addPlugin( plugin );        
-        
+                
         return mojoDescriptor;
     }
 

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Wed Apr  1 00:36:02 2009
@@ -31,7 +31,6 @@
 
 import org.apache.maven.ArtifactFilterManager;
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
 import org.apache.maven.artifact.repository.metadata.Metadata;
@@ -152,13 +151,7 @@
         {         
             resolvePluginVersion( plugin, project, session );
                                      
-            addPlugin( plugin, project, session );
-
-            pluginDescriptor = pluginCollector.getPluginDescriptor( plugin );
-                        
-            project.addPlugin( plugin );
-           
-            return pluginDescriptor;
+            return addPlugin( plugin, project, session );
         }
         catch ( ArtifactResolutionException e )
         {
@@ -191,7 +184,7 @@
         return plugin.getGroupId() + ":" + plugin.getArtifactId() + ":" + plugin.getVersion();
     }
     
-    protected void addPlugin( Plugin plugin, MavenProject project, MavenSession session )
+    protected PluginDescriptor addPlugin( Plugin plugin, MavenProject project, MavenSession session )
         throws ArtifactNotFoundException, ArtifactResolutionException, PluginManagerException, InvalidPluginException, PluginVersionResolutionException
     {
         ArtifactRepository localRepository = session.getLocalRepository();
@@ -247,6 +240,8 @@
         pluginDescriptor.setPluginArtifact( pluginArtifact );
         pluginDescriptor.setArtifacts( new ArrayList<Artifact>( pluginArtifacts ) );
         pluginDescriptor.setClassRealm( pluginRealm );
+        
+        return pluginDescriptor;
     }
 
     // plugin artifact
@@ -1224,65 +1219,39 @@
         // in settings.xml.
         if ( StringUtils.isEmpty( version ) || Artifact.RELEASE_VERSION.equals( version ) )
         {
-            // 1. resolve the version to be used
-            version = resolveMetaVersion( groupId, artifactId, project, session.getLocalRepository(), Artifact.RELEASE_VERSION );
-            logger.debug( "Version from RELEASE metadata: " + version );
-        }
-
-        // if we still haven't found a version, then fail early before we get into the update goop.
-        if ( StringUtils.isEmpty( version ) )
-        {
-            throw new PluginVersionNotFoundException( groupId, artifactId );
-        }
-
-        plugin.setVersion( version );
-    }
-
-    private String resolveMetaVersion( String groupId, String artifactId, MavenProject project, ArtifactRepository localRepository, String metaVersionId )
-        throws PluginVersionResolutionException, InvalidPluginException
-    {
-        logger.info( "Attempting to resolve a version for plugin: " + groupId + ":" + artifactId + " using meta-version: " + metaVersionId );
-
-        Artifact artifact = repositorySystem.createProjectArtifact( groupId, artifactId, metaVersionId );
-
-        String version = null;
+            // 1. resolve the version to be used            
+            Artifact artifact = repositorySystem.createProjectArtifact( groupId, artifactId, Artifact.RELEASE_VERSION );
 
-        String artifactVersion = artifact.getVersion();
+            String artifactVersion = artifact.getVersion();
 
-        // make sure this artifact was transformed to a real version, and actually resolved to a file in the repo...
-        if ( !metaVersionId.equals( artifactVersion ) && ( artifact.getFile() != null ) )
-        {
-            boolean pluginValid = false;
-
-            while ( !pluginValid && ( artifactVersion != null ) )
+            // make sure this artifact was transformed to a real version, and actually resolved to a file in the repo...
+            if ( !Artifact.RELEASE_VERSION.equals( artifactVersion ) && ( artifact.getFile() != null ) )
             {
-                pluginValid = true;
-                
-                MavenProject pluginProject;
-                
-                try
-                {
-                    artifact = repositorySystem.createProjectArtifact( groupId, artifactId, artifactVersion );
+                boolean pluginValid = false;
 
-                    pluginProject = mavenProjectBuilder.buildFromRepository( artifact, project.getRemoteArtifactRepositories(), localRepository );
-                }
-                catch ( ProjectBuildingException e )
+                while ( !pluginValid && ( artifactVersion != null ) )
                 {
-                    throw new InvalidPluginException( "Unable to build project information for plugin '" + ArtifactUtils.versionlessKey( groupId, artifactId ) + "': " + e.getMessage(), e );
+                    pluginValid = true;
+                    
+                    artifact = repositorySystem.createProjectArtifact( groupId, artifactId, artifactVersion );
                 }
+
+                version = artifactVersion;
             }
 
-            version = artifactVersion;
+            if ( version == null )
+            {
+                version = artifactVersion;
+            }
         }
 
-        if ( version == null )
+        // if we still haven't found a version, then fail early before we get into the update goop.
+        if ( StringUtils.isEmpty( version ) )
         {
-            version = artifactVersion;
+            throw new PluginVersionNotFoundException( groupId, artifactId );
         }
 
-        logger.info( "Using version: " + version + " of plugin: " + groupId + ":" + artifactId );
-
-        return version;
+        plugin.setVersion( version );
     }
 
     // We need to strip out the methods in here for a validation method.

Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginCollector.java Wed Apr  1 00:36:02 2009
@@ -33,6 +33,7 @@
 import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
 import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
 
+//TODO: collapse this into the plugin manager
 public class MavenPluginCollector
     implements ComponentDiscoveryListener
 {

Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTest.java Wed Apr  1 00:36:02 2009
@@ -99,7 +99,7 @@
         // We just need to use the configuration, and get the POM from that.
         MavenProject project = projectBuilder.build( pom, configuration );        
                         
-        MavenSession session = new MavenSession( request, project );
+        MavenSession session = new MavenSession( getContainer(), request, project );
         
         return session;
     }

Modified: maven/components/branches/MNG-2766/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=760747&r1=760746&r2=760747&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/branches/MNG-2766/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Wed Apr  1 00:36:02 2009
@@ -1301,20 +1301,6 @@
         return build;
     }
 
-    public void addPlugin( Plugin plugin )
-    {
-        Build build = getModelBuild();
-
-        if ( !build.getPluginsAsMap().containsKey( plugin.getKey() ) )
-        {
-            injectPluginManagementInfo( plugin );
-
-            build.addPlugin( plugin );
-
-            build.flushPluginMap();
-        }
-    }
-
     //!!jvz remove ModelUtils
     public void injectPluginManagementInfo( Plugin plugin )
     {