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 ) {