diff --git a/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java b/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java index 0f29d9d801..d417efc3fe 100644 --- a/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java +++ b/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java @@ -54,6 +54,7 @@ public class MavenArtifactFilterManager artifacts.add( "maven-repository-metadata" ); artifacts.add( "maven-settings" ); artifacts.add( "plexus-container-default" ); + artifacts.add( "plexus-component-api" ); artifacts.add( "plexus-interactivity-api" ); artifacts.add( "plexus-utils" ); artifacts.add( "wagon-provider-api" ); diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java index 020dff8344..3599e58b97 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java @@ -172,7 +172,7 @@ public class DefaultLifecycleExecutor try { - Map handlers = findArtifactTypeHandlers( project, session.getSettings(), session.getLocalRepository() ); + Map handlers = findArtifactTypeHandlers( project, session ); artifactHandlerManager.addHandlers( handlers ); } @@ -830,8 +830,7 @@ public class DefaultLifecycleExecutor Plugin plugin = new Plugin(); plugin.setGroupId( groupId ); plugin.setArtifactId( artifactId ); - lifecyclePluginDescriptor = verifyPlugin( plugin, project, session.getSettings(), - session.getLocalRepository() ); + lifecyclePluginDescriptor = verifyPlugin( plugin, project, session ); if ( lifecyclePluginDescriptor == null ) { throw new LifecycleExecutionException( @@ -1045,8 +1044,7 @@ public class DefaultLifecycleExecutor String packaging = project.getPackaging(); Map mappings = null; - LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, - session.getSettings(), session.getLocalRepository() ); + LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, session ); if ( m != null ) { mappings = m.getPhases( lifecycle.getId() ); @@ -1093,8 +1091,7 @@ public class DefaultLifecycleExecutor String packaging = project.getPackaging(); List optionalMojos = null; - LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, session - .getSettings(), session.getLocalRepository() ); + LifecycleMapping m = (LifecycleMapping) findExtension( project, LifecycleMapping.ROLE, packaging, session ); if ( m != null ) { @@ -1123,8 +1120,7 @@ public class DefaultLifecycleExecutor return optionalMojos; } - private Object findExtension( MavenProject project, String role, String roleHint, Settings settings, - ArtifactRepository localRepository ) + private Object findExtension( MavenProject project, String role, String roleHint, MavenSession session ) throws LifecycleExecutionException, PluginNotFoundException { Object pluginComponent = null; @@ -1135,7 +1131,7 @@ public class DefaultLifecycleExecutor if ( plugin.isExtensions() ) { - verifyPlugin( plugin, project, settings, localRepository ); + verifyPlugin( plugin, project, session ); // TODO: if moved to the plugin manager we already have the descriptor from above and so do can lookup the container directly try @@ -1160,7 +1156,7 @@ public class DefaultLifecycleExecutor * @todo Not particularly happy about this. Would like WagonManager and ArtifactTypeHandlerManager to be able to * lookup directly, or have them passed in */ - private Map findArtifactTypeHandlers( MavenProject project, Settings settings, ArtifactRepository localRepository ) + private Map findArtifactTypeHandlers( MavenProject project, MavenSession session ) throws LifecycleExecutionException, PluginNotFoundException { Map map = new HashMap(); @@ -1170,7 +1166,7 @@ public class DefaultLifecycleExecutor if ( plugin.isExtensions() ) { - verifyPlugin( plugin, project, settings, localRepository ); + verifyPlugin( plugin, project, session ); // TODO: if moved to the plugin manager we already have the descriptor from above and so do can lookup the container directly try @@ -1216,7 +1212,7 @@ public class DefaultLifecycleExecutor Settings settings = session.getSettings(); PluginDescriptor pluginDescriptor = - verifyPlugin( plugin, project, session.getSettings(), session.getLocalRepository() ); + verifyPlugin( plugin, project, session ); if ( pluginDescriptor.getMojos() != null && !pluginDescriptor.getMojos().isEmpty() ) { @@ -1244,14 +1240,13 @@ public class DefaultLifecycleExecutor } } - private PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings, - ArtifactRepository localRepository ) + private PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, MavenSession session ) throws LifecycleExecutionException, PluginNotFoundException { PluginDescriptor pluginDescriptor; try { - pluginDescriptor = pluginManager.verifyPlugin( plugin, project, settings, localRepository ); + pluginDescriptor = pluginManager.verifyPlugin( plugin, project, session ); } catch ( PluginManagerException e ) { @@ -1463,8 +1458,8 @@ public class DefaultLifecycleExecutor { Plugin buildPlugin = (Plugin) i.next(); - PluginDescriptor desc = verifyPlugin( buildPlugin, project, session.getSettings(), session - .getLocalRepository() ); + PluginDescriptor desc = verifyPlugin( buildPlugin, project, session ); + if ( prefix.equals( desc.getGoalPrefix() ) ) { plugin = buildPlugin; @@ -1516,7 +1511,7 @@ public class DefaultLifecycleExecutor if ( pluginDescriptor == null ) { - pluginDescriptor = verifyPlugin( plugin, project, session.getSettings(), session.getLocalRepository() ); + pluginDescriptor = verifyPlugin( plugin, project, session ); } // this has been simplified from the old code that injected the plugin management stuff, since diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java index 5c3228bb0e..8ef67036d8 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java @@ -27,7 +27,6 @@ import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.resolver.ArtifactResolver; -import org.apache.maven.artifact.resolver.filter.AndArtifactFilter; import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; @@ -55,10 +54,10 @@ import org.apache.maven.project.artifact.InvalidDependencyVersionException; import org.apache.maven.project.artifact.MavenMetadataSource; import org.apache.maven.project.path.PathTranslator; import org.apache.maven.reporting.MavenReport; -import org.apache.maven.settings.Settings; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.PlexusContainerException; +import org.codehaus.plexus.DefaultPlexusContainer; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.component.configurator.ComponentConfigurationException; import org.codehaus.plexus.component.configurator.ComponentConfigurator; @@ -151,8 +150,7 @@ public class DefaultPluginManager public PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, - Settings settings, - ArtifactRepository localRepository ) + MavenSession session ) throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException, InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException, PluginVersionNotFoundException @@ -162,19 +160,21 @@ public class DefaultPluginManager if ( plugin.getVersion() == null ) { String version = pluginVersionManager.resolvePluginVersion( plugin.getGroupId(), plugin.getArtifactId(), - project, settings, localRepository ); + project, session ); plugin.setVersion( version ); } - return verifyVersionedPlugin( plugin, project, localRepository ); + return verifyVersionedPlugin( plugin, project, session ); } private PluginDescriptor verifyVersionedPlugin( Plugin plugin, MavenProject project, - ArtifactRepository localRepository ) + MavenSession session ) throws PluginVersionResolutionException, ArtifactNotFoundException, ArtifactResolutionException, InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException { + ArtifactRepository localRepository = session.getLocalRepository(); + // TODO: this might result in an artifact "RELEASE" being resolved continuously // FIXME: need to find out how a plugin gets marked as 'installed' // and no ChildContainer exists. The check for that below fixes @@ -200,7 +200,7 @@ public class DefaultPluginManager if ( !pluginCollector.isPluginInstalled( plugin ) ) { - addPlugin( plugin, pluginArtifact, project, localRepository ); + addPlugin( plugin, pluginArtifact, project, session ); } project.addPlugin( plugin ); @@ -265,23 +265,53 @@ public class DefaultPluginManager } } + ArtifactFilter coreArtifactFilter = MavenArtifactFilterManager.createStandardFilter(); + protected void addPlugin( Plugin plugin, Artifact pluginArtifact, MavenProject project, - ArtifactRepository localRepository ) - throws PluginManagerException, InvalidPluginException + MavenSession session ) + throws ArtifactNotFoundException, ArtifactResolutionException, PluginManagerException, InvalidPluginException { + // ---------------------------------------------------------------------------- + // Get the dependencies for the Plugin + // ---------------------------------------------------------------------------- + + // the only Plugin instance which will have dependencies is the one specified in the project. + // We need to look for a Plugin instance there, in case the instance we're using didn't come from + // the project. + Plugin projectPlugin = (Plugin) project.getBuild().getPluginsAsMap().get( plugin.getKey() ); + + if ( projectPlugin == null ) + { + projectPlugin = plugin; + } + + Set artifacts = getPluginArtifacts( pluginArtifact, projectPlugin, project, session ); // ---------------------------------------------------------------------------- // Realm creation for a plugin // ---------------------------------------------------------------------------- - ClassRealm componentRealm; + ClassRealm componentRealm = null; try { - componentRealm = container.createComponentRealm( plugin.getKey(), - Collections.singletonList( pluginArtifact.getFile() ) ); + List jars = new ArrayList(); + + for ( Iterator i = artifacts.iterator(); i.hasNext(); ) + { + Artifact artifact = (Artifact) i.next(); + + jars.add( artifact.getFile() ); + } + + jars.add( pluginArtifact.getFile() ); + + // Now here we need the artifact coreArtifactFilter stuff + + componentRealm = container.createComponentRealm( plugin.getKey(), jars ); + } catch ( PlexusContainerException e ) { @@ -300,39 +330,92 @@ public class DefaultPluginManager "The PluginDescriptor for the plugin " + plugin.getKey() + " was not found" ); } - pluginDescriptor.setClassRealm( componentRealm ); + pluginDescriptor.setPluginArtifact( pluginArtifact ); // we're only setting the plugin's artifact itself as the artifact list, to allow it to be retrieved // later when the plugin is first invoked. Retrieving this artifact will in turn allow us to // transitively resolve its dependencies, and add them to the plugin container... - pluginDescriptor.setArtifacts( Collections.singletonList( pluginArtifact ) ); + //pluginDescriptor.setArtifacts( Collections.singletonList( pluginArtifact ) ); - // ---------------------------------------------------------------------------- - // Get the dependencies for the Plugin - // ---------------------------------------------------------------------------- + //pluginDescriptor.setIntroducedDependencyArtifacts( artifacts ); + + pluginDescriptor.setArtifacts( new ArrayList( artifacts ) ); + + pluginDescriptor.setClassRealm( componentRealm ); + } + + private Set getPluginArtifacts( Artifact pluginArtifact, + Plugin plugin, + MavenProject project, + MavenSession session ) + throws InvalidPluginException, ArtifactNotFoundException, PluginManagerException, ArtifactResolutionException + { + Set artifacts; try { - // the only Plugin instance which will have dependencies is the one specified in the project. - // We need to look for a Plugin instance there, in case the instance we're using didn't come from - // the project. - Plugin projectPlugin = (Plugin) project.getBuild().getPluginsAsMap().get( plugin.getKey() ); - if ( projectPlugin == null ) - { - projectPlugin = plugin; - } - - //PLXAPI: These need to be discovered!!!!! - Set artifacts = MavenMetadataSource.createArtifacts( artifactFactory, projectPlugin.getDependencies(), null, - null, project ); - - pluginDescriptor.setIntroducedDependencyArtifacts( artifacts ); + artifacts = MavenMetadataSource.createArtifacts( artifactFactory, plugin.getDependencies(), null, + coreArtifactFilter, project ); } catch ( InvalidDependencyVersionException e ) { throw new InvalidPluginException( "Plugin '" + plugin + "' is invalid: " + e.getMessage(), e ); } + + ArtifactRepository localRepository = session.getLocalRepository(); + + ResolutionGroup resolutionGroup; + + try + { + resolutionGroup = artifactMetadataSource.retrieve( pluginArtifact, localRepository, + project.getPluginArtifactRepositories() ); + } + catch ( ArtifactMetadataRetrievalException e ) + { + throw new ArtifactResolutionException( "Unable to download metadata from repository for plugin '" + + pluginArtifact.getId() + "': " + e.getMessage(), pluginArtifact, e ); + } + + Set dependencies = new HashSet( resolutionGroup.getArtifacts() ); + + List repositories = new ArrayList(); + + repositories.addAll( resolutionGroup.getResolutionRepositories() ); + + repositories.addAll( project.getRemoteArtifactRepositories() ); + + ArtifactResolutionResult result = artifactResolver.resolveTransitively( dependencies, pluginArtifact, + localRepository, repositories, + artifactMetadataSource, + artifactFilter ); + + Set resolved = result.getArtifacts(); + + for ( Iterator it = resolved.iterator(); it.hasNext(); ) + { + Artifact artifact = (Artifact) it.next(); + + if ( !artifact.equals( pluginArtifact ) ) + { + artifact = project.replaceWithActiveArtifact( artifact ); + } + } + + List unresolved = new ArrayList( dependencies ); + + unresolved.removeAll( resolved ); + + resolveCoreArtifacts( unresolved, localRepository, resolutionGroup.getResolutionRepositories() ); + + List allResolved = new ArrayList( resolved.size() + unresolved.size() ); + + allResolved.addAll( resolved ); + + allResolved.addAll( unresolved ); + + return resolved; } // ---------------------------------------------------------------------- @@ -378,6 +461,7 @@ public class DefaultPluginManager for ( Iterator i = projects.iterator(); i.hasNext(); ) { MavenProject p = (MavenProject) i.next(); + resolveTransitiveDependencies( session, artifactResolver, mojoDescriptor.isDependencyResolutionRequired(), artifactFactory, p ); } @@ -428,9 +512,14 @@ public class DefaultPluginManager ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); + ClassRealm pluginRealm = pluginDescriptor.getClassRealm(); + ; + try { - Thread.currentThread().setContextClassLoader( mojoDescriptor.getPluginDescriptor().getClassRealm() ); + //ClassRealm pluginRealm = container.getComponentRealm( ) + + Thread.currentThread().setContextClassLoader( pluginRealm ); plugin.execute(); @@ -485,9 +574,8 @@ public class DefaultPluginManager if ( version == null ) { version = pluginVersionManager.resolveReportPluginVersion( reportPlugin.getGroupId(), - reportPlugin.getArtifactId(), project, - session.getSettings(), - session.getLocalRepository() ); + reportPlugin.getArtifactId(), project, session ); + reportPlugin.setVersion( version ); } @@ -497,7 +585,7 @@ public class DefaultPluginManager forLookup.setArtifactId( reportPlugin.getArtifactId() ); forLookup.setVersion( version ); - return verifyVersionedPlugin( forLookup, project, session.getLocalRepository() ); + return verifyVersionedPlugin( forLookup, project, session ); } private Mojo getConfiguredMojo( MavenSession session, @@ -515,14 +603,24 @@ public class DefaultPluginManager // if this is the first time this plugin has been used, the plugin's container will only // contain the plugin's artifact in isolation; we need to finish resolving the plugin's // dependencies, and add them to the container. - ensurePluginContainerIsComplete( pluginDescriptor, container, project, session ); + //getPluginArtifacts( pluginDescriptor, container, project, session ); Mojo plugin; try { + ClassRealm realm = mojoDescriptor.getPluginDescriptor().getClassRealm(); + + // We are forcing the use of the plugin realm for all lookups that might occur during + // the lifecycle that is part of the lookup. Here we are specifically trying to keep + // lookups that occur in contextualize calls in line with the right realm. + + DefaultPlexusContainer.setLookupRealm( realm ); + plugin = (Mojo) container.lookup( Mojo.ROLE, mojoDescriptor.getRoleHint() ); + DefaultPlexusContainer.setLookupRealm( null ); + if ( report && !( plugin instanceof MavenReport ) ) { // TODO: the mojoDescriptor should actually capture this information so we don't get this far @@ -585,85 +683,6 @@ public class DefaultPluginManager return plugin; } - private void ensurePluginContainerIsComplete( PluginDescriptor pluginDescriptor, - PlexusContainer pluginContainer, - MavenProject project, - MavenSession session ) - throws ArtifactNotFoundException, PluginManagerException, ArtifactResolutionException - { - // if the plugin's already been used once, don't re-do this step... - // otherwise, we have to finish resolving the plugin's classpath and start the container. - if ( pluginDescriptor.getArtifacts() != null && pluginDescriptor.getArtifacts().size() == 1 ) - { - Artifact pluginArtifact = (Artifact) pluginDescriptor.getArtifacts().get( 0 ); - - pluginDescriptor.setPluginArtifact( pluginArtifact ); - - ArtifactRepository localRepository = session.getLocalRepository(); - - ResolutionGroup resolutionGroup; - try - { - resolutionGroup = artifactMetadataSource.retrieve( pluginArtifact, localRepository, - project.getPluginArtifactRepositories() ); - } - catch ( ArtifactMetadataRetrievalException e ) - { - throw new ArtifactResolutionException( "Unable to download metadata from repository for plugin '" + - pluginArtifact.getId() + "': " + e.getMessage(), pluginArtifact, e ); - } - - Set dependencies = new HashSet( resolutionGroup.getArtifacts() ); - dependencies.addAll( pluginDescriptor.getIntroducedDependencyArtifacts() ); - - List repositories = new ArrayList(); - repositories.addAll( resolutionGroup.getResolutionRepositories() ); - repositories.addAll( project.getRemoteArtifactRepositories() ); - - ArtifactResolutionResult result = artifactResolver.resolveTransitively( dependencies, pluginArtifact, - localRepository, repositories, - artifactMetadataSource, - artifactFilter ); - - Set resolved = result.getArtifacts(); - - for ( Iterator it = resolved.iterator(); it.hasNext(); ) - { - Artifact artifact = (Artifact) it.next(); - - if ( !artifact.equals( pluginArtifact ) ) - { - artifact = project.replaceWithActiveArtifact( artifact ); - - try - { - pluginContainer.addJarResource( artifact.getFile() ); - } - catch ( PlexusContainerException e ) - { - throw new PluginManagerException( "Error adding plugin dependency '" + - artifact.getDependencyConflictId() + "' into plugin manager: " + e.getMessage(), e ); - } - } - } - - pluginDescriptor.setClassRealm( pluginContainer.getContainerRealm() ); - - List unresolved = new ArrayList( dependencies ); - - unresolved.removeAll( resolved ); - - resolveCoreArtifacts( unresolved, localRepository, resolutionGroup.getResolutionRepositories() ); - - List allResolved = new ArrayList( resolved.size() + unresolved.size() ); - - allResolved.addAll( resolved ); - allResolved.addAll( unresolved ); - - pluginDescriptor.setArtifacts( allResolved ); - } - } - private void resolveCoreArtifacts( List unresolved, ArtifactRepository localRepository, List resolutionRepositories ) @@ -1043,6 +1062,8 @@ public class DefaultPluginManager { ComponentConfigurator configurator = null; + ClassRealm pluginRealm = mojoDescriptor.getPluginDescriptor().getClassRealm(); + try { String configuratorId = mojoDescriptor.getComponentConfigurator(); @@ -1064,8 +1085,7 @@ public class DefaultPluginManager getLogger().debug( "Configuring mojo '" + mojoDescriptor.getId() + "' -->" ); // This needs to be able to use methods - configurator.configureComponent( plugin, configuration, expressionEvaluator, - pluginContainer.getContainerRealm(), listener ); + configurator.configureComponent( plugin, configuration, expressionEvaluator, pluginRealm, listener ); getLogger().debug( "-- end configuration --" ); } diff --git a/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java index 0caa2fddca..019538455b 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java @@ -54,8 +54,7 @@ public interface PluginManager Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, MavenProject project ); - PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings, - ArtifactRepository localRepository ) + PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, MavenSession session ) throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException, InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException, PluginVersionNotFoundException; diff --git a/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java b/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java index b4b88ce667..cff014d23f 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java @@ -28,6 +28,7 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.execution.RuntimeInformation; +import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.model.ReportPlugin; import org.apache.maven.plugin.InvalidPluginException; @@ -80,24 +81,35 @@ public class DefaultPluginVersionManager // TODO: Revisit to remove this piece of state. PLUGIN REGISTRY MAY BE UPDATED ON DISK OUT-OF-PROCESS! private Map resolvedMetaVersions = new HashMap(); - public String resolvePluginVersion( String groupId, String artifactId, MavenProject project, Settings settings, - ArtifactRepository localRepository ) + public String resolvePluginVersion( String groupId, + String artifactId, + MavenProject project, + MavenSession session ) throws PluginVersionResolutionException, InvalidPluginException, PluginVersionNotFoundException { - return resolvePluginVersion( groupId, artifactId, project, settings, localRepository, false ); + return resolvePluginVersion( groupId, artifactId, project, session, false ); } - public String resolveReportPluginVersion( String groupId, String artifactId, MavenProject project, - Settings settings, ArtifactRepository localRepository ) + public String resolveReportPluginVersion( String groupId, + String artifactId, + MavenProject project, + MavenSession session ) throws PluginVersionResolutionException, InvalidPluginException, PluginVersionNotFoundException { - return resolvePluginVersion( groupId, artifactId, project, settings, localRepository, true ); + return resolvePluginVersion( groupId, artifactId, project, session, true ); } - private String resolvePluginVersion( String groupId, String artifactId, MavenProject project, Settings settings, - ArtifactRepository localRepository, boolean resolveAsReportPlugin ) + private String resolvePluginVersion( String groupId, + String artifactId, + MavenProject project, + MavenSession session, + boolean resolveAsReportPlugin ) throws PluginVersionResolutionException, InvalidPluginException, PluginVersionNotFoundException { + Settings settings = session.getSettings(); + + ArtifactRepository localRepository = session.getLocalRepository(); + // first pass...if the plugin is specified in the pom, try to retrieve the version from there. String version = getVersionFromPluginConfig( groupId, artifactId, project, resolveAsReportPlugin ); @@ -302,7 +314,8 @@ public class DefaultPluginVersionManager return version; } - private boolean shouldCheckForUpdates( String groupId, String artifactId ) + private boolean shouldCheckForUpdates( String groupId, + String artifactId ) throws PluginVersionResolutionException { PluginRegistry pluginRegistry = getPluginRegistry( groupId, artifactId ); @@ -343,7 +356,9 @@ public class DefaultPluginVersionManager } } - private boolean checkForRejectedStatus( String groupId, String artifactId, String version ) + private boolean checkForRejectedStatus( String groupId, + String artifactId, + String version ) throws PluginVersionResolutionException { PluginRegistry pluginRegistry = getPluginRegistry( groupId, artifactId ); @@ -353,8 +368,11 @@ public class DefaultPluginVersionManager return plugin.getRejectedVersions().contains( version ); } - private boolean promptToPersistPluginUpdate( String version, String updatedVersion, String groupId, - String artifactId, Settings settings ) + private boolean promptToPersistPluginUpdate( String version, + String updatedVersion, + String groupId, + String artifactId, + Settings settings ) throws PluginVersionResolutionException { try @@ -440,7 +458,9 @@ public class DefaultPluginVersionManager } } - private void addNewVersionToRejectedListInExisting( String groupId, String artifactId, String rejectedVersion ) + private void addNewVersionToRejectedListInExisting( String groupId, + String artifactId, + String rejectedVersion ) throws PluginVersionResolutionException { PluginRegistry pluginRegistry = getPluginRegistry( groupId, artifactId ); @@ -465,7 +485,8 @@ public class DefaultPluginVersionManager } } - private String resolveExistingFromPluginRegistry( String groupId, String artifactId ) + private String resolveExistingFromPluginRegistry( String groupId, + String artifactId ) throws PluginVersionResolutionException { PluginRegistry pluginRegistry = getPluginRegistry( groupId, artifactId ); @@ -482,7 +503,8 @@ public class DefaultPluginVersionManager return version; } - private org.apache.maven.plugin.registry.Plugin getPlugin( String groupId, String artifactId, + private org.apache.maven.plugin.registry.Plugin getPlugin( String groupId, + String artifactId, PluginRegistry pluginRegistry ) { Map pluginsByKey; @@ -501,12 +523,15 @@ public class DefaultPluginVersionManager return (org.apache.maven.plugin.registry.Plugin) pluginsByKey.get( pluginKey ); } - private String constructPluginKey( String groupId, String artifactId ) + private String constructPluginKey( String groupId, + String artifactId ) { return groupId + ":" + artifactId; } - private String getVersionFromPluginConfig( String groupId, String artifactId, MavenProject project, + private String getVersionFromPluginConfig( String groupId, + String artifactId, + MavenProject project, boolean resolveAsReportPlugin ) { String version = null; @@ -545,7 +570,9 @@ public class DefaultPluginVersionManager return version; } - private void updatePluginVersionInRegistry( String groupId, String artifactId, String version ) + private void updatePluginVersionInRegistry( String groupId, + String artifactId, + String version ) throws PluginVersionResolutionException { PluginRegistry pluginRegistry = getPluginRegistry( groupId, artifactId ); @@ -587,7 +614,9 @@ public class DefaultPluginVersionManager writeUserRegistry( groupId, artifactId, pluginRegistry ); } - private void writeUserRegistry( String groupId, String artifactId, PluginRegistry pluginRegistry ) + private void writeUserRegistry( String groupId, + String artifactId, + PluginRegistry pluginRegistry ) { File pluginRegistryFile = pluginRegistry.getRuntimeInfo().getFile(); @@ -620,7 +649,8 @@ public class DefaultPluginVersionManager } } - private PluginRegistry getPluginRegistry( String groupId, String artifactId ) + private PluginRegistry getPluginRegistry( String groupId, + String artifactId ) throws PluginVersionResolutionException { if ( pluginRegistry == null ) @@ -649,8 +679,11 @@ public class DefaultPluginVersionManager return pluginRegistry; } - private String resolveMetaVersion( String groupId, String artifactId, MavenProject project, - ArtifactRepository localRepository, String metaVersionId ) + private String resolveMetaVersion( String groupId, + String artifactId, + MavenProject project, + ArtifactRepository localRepository, + String metaVersionId ) throws PluginVersionResolutionException, InvalidPluginException { Artifact artifact = artifactFactory.createProjectArtifact( groupId, artifactId, metaVersionId ); diff --git a/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionManager.java b/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionManager.java index 815f53314e..06dc2cc93a 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/version/PluginVersionManager.java @@ -20,17 +20,16 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.plugin.InvalidPluginException; import org.apache.maven.project.MavenProject; import org.apache.maven.settings.Settings; +import org.apache.maven.execution.MavenSession; public interface PluginVersionManager { String ROLE = PluginVersionManager.class.getName(); - String resolvePluginVersion( String groupId, String artifactId, MavenProject project, Settings settings, - ArtifactRepository localRepository ) + String resolvePluginVersion( String groupId, String artifactId, MavenProject project, MavenSession session ) throws PluginVersionResolutionException, InvalidPluginException, PluginVersionNotFoundException; - String resolveReportPluginVersion( String groupId, String artifactId, MavenProject project, Settings settings, - ArtifactRepository localRepository ) + String resolveReportPluginVersion( String groupId, String artifactId, MavenProject project, MavenSession session ) throws PluginVersionResolutionException, InvalidPluginException, PluginVersionNotFoundException; } diff --git a/maven-embedder/pom.xml b/maven-embedder/pom.xml index c27b2fd8f9..dad065b37a 100644 --- a/maven-embedder/pom.xml +++ b/maven-embedder/pom.xml @@ -48,6 +48,14 @@ + + maven-surefire-plugin + + + **/*.java + + + diff --git a/pom.xml b/pom.xml index 98a5f27780..4883cea02b 100644 --- a/pom.xml +++ b/pom.xml @@ -37,7 +37,6 @@ http://jira.codehaus.org/browse/MNG - apache.snapshots