Author: jvanzyl Date: Wed May 13 13:41:06 2009 New Revision: 774361 URL: http://svn.apache.org/viewvc?rev=774361&view=rev Log: o removing MavenProject from the public signature of the plugin manager to enforce the concern of the plugin manager which is simply to execute plugins. all configuration and processing of configuration happens before the plugin manager. the only thing left is the expression evaluator which has the mixed concern of configuration and componnent injection.
Modified: 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/PluginManager.java maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java 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=774361&r1=774360&r2=774361&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 May 13 13:41:06 2009 @@ -445,7 +445,7 @@ // Maven plugin deployment we will find the right PluginDescriptor from the remote // repository. - plugin = pluginManager.findPluginForPrefix( prefix, project ); + plugin = pluginManager.findPluginForPrefix( prefix, localRepository, project.getRemoteArtifactRepositories() ); // Search plugin in the current POM if ( plugin == null ) @@ -456,7 +456,7 @@ try { - desc = pluginManager.loadPlugin( buildPlugin, project, localRepository ); + desc = pluginManager.loadPlugin( buildPlugin, localRepository, project.getRemoteArtifactRepositories() ); } catch ( PluginLoaderException e ) { @@ -505,7 +505,7 @@ try { - mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, project, localRepository ); + mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, localRepository, project.getRemoteArtifactRepositories() ); } catch ( PluginLoaderException e ) { @@ -530,7 +530,7 @@ try { - mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, project, localRepository ); + mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, localRepository, project.getRemoteArtifactRepositories() ); } catch ( PluginLoaderException e ) { 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=774361&r1=774360&r2=774361&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 May 13 13:41:06 2009 @@ -114,7 +114,7 @@ } // This should be template method code for allowing subclasses to assist in contributing search/hint information - public Plugin findPluginForPrefix( String prefix, MavenProject project ) + public Plugin findPluginForPrefix( String prefix, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) { //Use the plugin managers capabilities to get information to augement the request @@ -122,7 +122,7 @@ //return getByPrefix( prefix, session.getPluginGroups(), project.getRemoteArtifactRepositories(), session.getLocalRepository() ); } - public PluginDescriptor loadPlugin( Plugin plugin, MavenProject project, ArtifactRepository localRepository ) + public PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws PluginLoaderException { PluginDescriptor pluginDescriptor = getPluginDescriptor( plugin ); @@ -136,7 +136,7 @@ try { - return addPlugin( plugin, project, localRepository ); + return addPlugin( plugin, localRepository, remoteRepositories ); } catch ( ArtifactResolutionException e ) // PluginResolutionException - a problem that occurs resolving the plugin artifact or its deps @@ -167,7 +167,7 @@ return plugin.getGroupId() + ":" + plugin.getArtifactId() + ":" + plugin.getVersion(); } - protected PluginDescriptor addPlugin( Plugin plugin, MavenProject project, ArtifactRepository localRepository ) + protected PluginDescriptor addPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws ArtifactNotFoundException, ArtifactResolutionException, PluginVersionResolutionException, PluginContainerException, PluginVersionNotFoundException { Artifact pluginArtifact = repositorySystem.createPluginArtifact( plugin ); @@ -175,7 +175,7 @@ ArtifactResolutionRequest request = new ArtifactResolutionRequest() .setArtifact( pluginArtifact ) .setLocalRepository( localRepository ) - .setRemoteRepostories( project.getRemoteArtifactRepositories() ); + .setRemoteRepostories( remoteRepositories ); ArtifactResolutionResult result = repositorySystem.resolve( request ); @@ -183,7 +183,7 @@ ClassRealm pluginRealm = container.createChildRealm( pluginKey( plugin ) ); - Set<Artifact> pluginArtifacts = getPluginArtifacts( pluginArtifact, plugin, project, localRepository ); + Set<Artifact> pluginArtifacts = getPluginArtifacts( pluginArtifact, plugin, localRepository, remoteRepositories ); for ( Artifact a : pluginArtifacts ) { @@ -230,7 +230,7 @@ // its dependencies while filtering out what's in the core // layering on the project level plugin dependencies - private Set<Artifact> getPluginArtifacts( Artifact pluginArtifact, Plugin pluginAsSpecifiedinPom, MavenProject project, ArtifactRepository localRepository ) + private Set<Artifact> getPluginArtifacts( Artifact pluginArtifact, Plugin pluginAsSpecifiedinPom, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws ArtifactNotFoundException, ArtifactResolutionException { AndArtifactFilter filter = new AndArtifactFilter(); @@ -260,7 +260,7 @@ // So this in fact are overrides ... .setArtifactDependencies( dependenciesToResolveForPlugin ) .setLocalRepository( localRepository ) - .setRemoteRepostories( project.getRemoteArtifactRepositories() ) + .setRemoteRepostories( remoteRepositories ) .setFilter( filter ) .setResolveTransitively( true ); @@ -536,10 +536,10 @@ } } - public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, MavenProject project, ArtifactRepository localRepository ) + public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws PluginLoaderException { - PluginDescriptor pluginDescriptor = loadPlugin( plugin, project, localRepository ); + PluginDescriptor pluginDescriptor = loadPlugin( plugin, localRepository, remoteRepositories ); MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal ); Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=774361&r1=774360&r2=774361&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original) +++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Wed May 13 13:41:06 2009 @@ -15,12 +15,13 @@ * the License. */ +import java.util.List; + import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor; -import org.apache.maven.project.MavenProject; import org.codehaus.plexus.component.discovery.ComponentDiscoverer; import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener; @@ -35,12 +36,12 @@ // - configure the plugin [extension point] // - execute the plugin - Plugin findPluginForPrefix( String prefix, MavenProject project ); + Plugin findPluginForPrefix( String prefix, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ); - PluginDescriptor loadPlugin( Plugin plugin, MavenProject project, ArtifactRepository localRepository ) + PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws PluginLoaderException; - MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, MavenProject project, ArtifactRepository localRepository ) + MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws PluginLoaderException; void executeMojo( MavenSession session, MojoExecution execution ) Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java?rev=774361&r1=774360&r2=774361&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java (original) +++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java Wed May 13 13:41:06 2009 @@ -6,6 +6,7 @@ import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.codehaus.plexus.component.annotations.Requirement; +import org.codehaus.plexus.util.xml.Xpp3Dom; public class PluginManagerTest extends AbstractCoreMavenComponentTestCase @@ -77,10 +78,16 @@ public void testRemoteResourcesPlugin() throws Exception { + //TODO: turn an equivalent back on when the RR plugin is released. + /* This will not work until the RR plugin is released to get rid of the binding to the reporting exception which is a mistake. + This happpens after removing the reporting API from the core: + + java.lang.NoClassDefFoundError: org/apache/maven/reporting/MavenReportException + MavenSession session = createMavenSession( getProject( "project-with-inheritance" ) ); String goal = "process"; @@ -107,9 +114,14 @@ plugin.setArtifactId( "maven-surefire-plugin" ); plugin.setVersion( "2.4.2" ); + // The project has already been fully interpolated so getting the raw mojoDescriptor is not going to have the processes configuration. MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, session.getCurrentProject(), session.getLocalRepository() ); assertPluginDescriptor( mojoDescriptor, "org.apache.maven.plugins", "maven-surefire-plugin", "2.4.2" ); - MojoExecution mojoExecution = new MojoExecution( mojoDescriptor ); + + System.out.println( session.getCurrentProject().getBuild().getPluginsAsMap() ); + + Xpp3Dom configuration = (Xpp3Dom) session.getCurrentProject().getBuild().getPluginsAsMap().get( plugin.getKey() ).getExecutions().get( 0 ).getConfiguration(); + MojoExecution mojoExecution = new MojoExecution( mojoDescriptor, configuration ); pluginManager.executeMojo( session, mojoExecution ); } Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=774361&r1=774360&r2=774361&view=diff ============================================================================== --- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java (original) +++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java Wed May 13 13:41:06 2009 @@ -1457,8 +1457,7 @@ ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration(); - String localRepoUrl = - System.getProperty( "maven.repo.local", System.getProperty( "user.home" ) + "/.m2/repository" ); + String localRepoUrl = System.getProperty( "maven.repo.local", System.getProperty( "user.home" ) + "/.m2/repository" ); localRepoUrl = "file://" + localRepoUrl; config.setLocalRepository( new DefaultArtifactRepository( "local", localRepoUrl, new DefaultRepositoryLayout() ) );