Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Tue Aug 11 10:29:38 2009 @@ -32,6 +32,8 @@ import org.apache.maven.ProjectDependenciesResolver; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.DefaultRepositoryRequest; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.RepositoryMetadataReadException; import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader; @@ -154,6 +156,10 @@ MavenExecutionResult result = session.getResult(); + RepositoryRequest repositoryRequest = new DefaultRepositoryRequest(); + repositoryRequest.setLocalRepository( session.getLocalRepository() ); + repositoryRequest.setCache( session.getRepositoryCache() ); + for ( MavenProject currentProject : session.getProjects() ) { if ( session.isBlackListed( currentProject ) ) @@ -185,7 +191,8 @@ // the project dependencies. Having it happen in the plugin manager is a tangled mess. We can optimize this // later by looking at the build plan. Would be better to just batch download everything required by the reactor. - projectDependenciesResolver.resolve( currentProject, executionPlan.getRequiredResolutionScopes(), session.getLocalRepository(), currentProject.getRemoteArtifactRepositories() ); + repositoryRequest.setRemoteRepositories( currentProject.getRemoteArtifactRepositories() ); + projectDependenciesResolver.resolve( currentProject, executionPlan.getRequiredResolutionScopes(), repositoryRequest ); if ( logger.isDebugEnabled() ) { @@ -330,8 +337,7 @@ { mojoDescriptor = pluginManager.getMojoDescriptor( mojoExecution.getPlugin(), mojoExecution.getGoal(), - session.getLocalRepository(), - project.getPluginArtifactRepositories() ); + getRepositoryRequest( session, project ) ); mojoExecution.setMojoDescriptor( mojoDescriptor ); } @@ -354,6 +360,16 @@ return new MavenExecutionPlan( lifecyclePlan, requiredDependencyResolutionScopes ); } + private RepositoryRequest getRepositoryRequest( MavenSession session, MavenProject project ) + { + RepositoryRequest request = new DefaultRepositoryRequest(); + + request.setCache( session.getRepositoryCache() ); + request.setLocalRepository( session.getLocalRepository() ); + request.setRemoteRepositories( project.getPluginArtifactRepositories() ); + + return request; + } private void collectDependencyResolutionScopes( Collection<String> requiredDependencyResolutionScopes, MojoExecution mojoExecution ) @@ -511,8 +527,7 @@ for ( String goal : execution.getGoals() ) { MojoDescriptor mojoDescriptor = - pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), - project.getPluginArtifactRepositories() ); + pluginManager.getMojoDescriptor( plugin, goal, getRepositoryRequest( session, project ) ); List<MojoExecution> mojoExecutions = lifecycleMappings.get( mojoDescriptor.getPhase() ); if ( mojoExecutions != null ) @@ -557,8 +572,7 @@ { MojoDescriptor forkedMojoDescriptor = pluginManager.getMojoDescriptor( forkedExecution.getPlugin(), forkedExecution.getGoal(), - session.getLocalRepository(), - project.getPluginArtifactRepositories() ); + getRepositoryRequest( session, project ) ); forkedExecution.setMojoDescriptor( forkedMojoDescriptor ); } @@ -875,20 +889,24 @@ injectPluginDeclarationFromProject( plugin, project ); + RepositoryRequest repositoryRequest = getRepositoryRequest( session, project ); + // If there is no version to be found then we need to look in the repository metadata for // this plugin and see what's specified as the latest release. // if ( plugin.getVersion() == null ) { - resolvePluginVersion( plugin, session.getLocalRepository(), project.getPluginArtifactRepositories() ); + resolvePluginVersion( plugin, repositoryRequest ); } - - return pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), project.getPluginArtifactRepositories() ); + + return pluginManager.getMojoDescriptor( plugin, goal, repositoryRequest ); } - private void resolvePluginVersion( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + private void resolvePluginVersion( Plugin plugin, RepositoryRequest repositoryRequest ) throws PluginNotFoundException { + ArtifactRepository localRepository = repositoryRequest.getLocalRepository(); + File artifactMetadataFile = null; String localPath; @@ -899,7 +917,7 @@ // //TODO: we should cycle through the repositories but take the repository which actually // satisfied the prefix. - for ( ArtifactRepository repository : remoteRepositories ) + for ( ArtifactRepository repository : repositoryRequest.getRemoteRepositories() ) { localPath = plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata-" + repository.getId() + ".xml"; @@ -974,7 +992,7 @@ if ( StringUtils.isEmpty( plugin.getVersion() ) ) { - throw new PluginNotFoundException( plugin, remoteRepositories ); + throw new PluginNotFoundException( plugin, repositoryRequest.getRemoteRepositories() ); } } @@ -1125,14 +1143,14 @@ } } - private void populateDefaultConfigurationForPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + private void populateDefaultConfigurationForPlugin( Plugin plugin, RepositoryRequest repositoryRequest ) throws LifecycleExecutionException { if ( plugin.getVersion() == null ) { try { - resolvePluginVersion( plugin, localRepository, remoteRepositories ); + resolvePluginVersion( plugin, repositoryRequest ); } catch ( PluginNotFoundException e ) { @@ -1144,29 +1162,29 @@ { for( String goal : pluginExecution.getGoals() ) { - Xpp3Dom dom = getDefaultPluginConfiguration( plugin, goal, localRepository, remoteRepositories ); + Xpp3Dom dom = getDefaultPluginConfiguration( plugin, goal, repositoryRequest ); pluginExecution.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) pluginExecution.getConfiguration(), dom, Boolean.TRUE ) ); } } } - public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, RepositoryRequest repositoryRequest ) throws LifecycleExecutionException { for( Plugin plugin : plugins ) { - populateDefaultConfigurationForPlugin( plugin, localRepository, remoteRepositories ); + populateDefaultConfigurationForPlugin( plugin, repositoryRequest ); } } - private Xpp3Dom getDefaultPluginConfiguration( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + private Xpp3Dom getDefaultPluginConfiguration( Plugin plugin, String goal, RepositoryRequest repositoryRequest ) throws LifecycleExecutionException { MojoDescriptor mojoDescriptor; try { - mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, localRepository, remoteRepositories ); + mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, repositoryRequest ); } catch ( PluginNotFoundException e ) { @@ -1252,13 +1270,13 @@ if ( project != null ) { + RepositoryRequest repositoryRequest = getRepositoryRequest( session, project ); + for ( Plugin buildPlugin : project.getBuildPlugins() ) { try { - PluginDescriptor pluginDescriptor = - pluginManager.loadPlugin( buildPlugin, session.getLocalRepository(), - project.getPluginArtifactRepositories() ); + PluginDescriptor pluginDescriptor = pluginManager.loadPlugin( buildPlugin, repositoryRequest ); if ( prefix.equals( pluginDescriptor.getGoalPrefix() ) ) {
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Tue Aug 11 10:29:38 2009 @@ -24,6 +24,7 @@ import java.util.Set; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.CycleDetectedInPluginGraphException; @@ -72,7 +73,7 @@ // Given a set of {...@link org.apache.maven.Plugin} objects where the GAV is set we can lookup the plugin // descriptor and populate the default configuration. // - void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, RepositoryRequest repositoryRequest ) throws LifecycleExecutionException; void execute( MavenSession session ); Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Tue Aug 11 10:29:38 2009 @@ -34,6 +34,8 @@ 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.DefaultRepositoryRequest; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; @@ -106,8 +108,7 @@ /** * * @param plugin - * @param localRepository - * @param remoteRepositories + * @param repositoryRequest * @return PluginDescriptor The component descriptor for the Maven plugin. * @throws PluginNotFoundException The plugin could not be found in any repositories. * @throws PluginResolutionException The plugin could be found but could not be resolved. @@ -116,10 +117,12 @@ * happen but if someone has made a descriptor by hand it's possible. * @throws CycleDetectedInComponentGraphException A cycle has been detected in the component graph for a plugin that has been dynamically loaded. */ - public synchronized PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + public synchronized PluginDescriptor loadPlugin( Plugin plugin, RepositoryRequest repositoryRequest ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, InvalidPluginDescriptorException { - PluginDescriptor pluginDescriptor = pluginCache.getPluginDescriptor( plugin, localRepository, remoteRepositories ); + PluginDescriptor pluginDescriptor = + pluginCache.getPluginDescriptor( plugin, repositoryRequest.getLocalRepository(), + repositoryRequest.getRemoteRepositories() ); if ( pluginDescriptor != null ) { @@ -128,10 +131,8 @@ Artifact pluginArtifact = repositorySystem.createPluginArtifact( plugin ); - ArtifactResolutionRequest request = new ArtifactResolutionRequest() + ArtifactResolutionRequest request = new ArtifactResolutionRequest( repositoryRequest ) .setArtifact( pluginArtifact ) - .setLocalRepository( localRepository ) - .setRemoteRepositories( remoteRepositories ) .setResolveTransitively( false ); // FIXME setTransferListener ArtifactResolutionResult result = repositorySystem.resolve( request ); @@ -207,7 +208,8 @@ pluginDescriptor.setPlugin( plugin ); pluginDescriptor.setPluginArtifact( pluginArtifact ); - pluginCache.putPluginDescriptor( plugin, localRepository, remoteRepositories, pluginDescriptor ); + pluginCache.putPluginDescriptor( plugin, repositoryRequest.getLocalRepository(), + repositoryRequest.getRemoteRepositories(), pluginDescriptor ); return pluginDescriptor; @@ -242,7 +244,7 @@ * no file set is meant to be excluded from the plugin realm in favor of the equivalent library from the current * core distro. */ - List<Artifact> getPluginArtifacts( Artifact pluginArtifact, Plugin pluginAsSpecifiedInPom, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + List<Artifact> getPluginArtifacts( Artifact pluginArtifact, Plugin pluginAsSpecifiedInPom, RepositoryRequest repositoryRequest ) throws ArtifactNotFoundException, ArtifactResolutionException { ArtifactFilter filter = new ScopeArtifactFilter( Artifact.SCOPE_RUNTIME_PLUS_SYSTEM ); @@ -269,12 +271,10 @@ dependenciesToResolveForPlugin.add( a ); } - ArtifactResolutionRequest request = new ArtifactResolutionRequest() + ArtifactResolutionRequest request = new ArtifactResolutionRequest( repositoryRequest ) .setArtifact( pluginArtifact ) // So this in fact are overrides ... .setArtifactDependencies( dependenciesToResolveForPlugin ) - .setLocalRepository( localRepository ) - .setRemoteRepositories( remoteRepositories ) .setFilter( filter ) .setResolveRoot( true ) .setResolveTransitively( true ); @@ -396,6 +396,7 @@ } Plugin plugin = pluginDescriptor.getPlugin(); + ArtifactRepository localRepository = session.getLocalRepository(); List<ArtifactRepository> remoteRepositories = session.getCurrentProject().getPluginArtifactRepositories(); @@ -417,7 +418,11 @@ try { - pluginArtifacts = getPluginArtifacts( pluginArtifact, plugin, localRepository, remoteRepositories ); + RepositoryRequest request = new DefaultRepositoryRequest(); + request.setLocalRepository( localRepository ); + request.setRemoteRepositories( remoteRepositories ); + request.setCache( session.getRepositoryCache() ); + pluginArtifacts = getPluginArtifacts( pluginArtifact, plugin, request ); } catch ( ArtifactNotFoundException e ) { @@ -686,7 +691,7 @@ } } - public MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + public MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, RepositoryRequest repositoryRequest ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException, InvalidPluginDescriptorException { Plugin plugin = new Plugin(); @@ -694,13 +699,13 @@ plugin.setArtifactId( artifactId ); plugin.setVersion( version ); - return getMojoDescriptor( plugin, goal, localRepository, remoteRepositories ); + return getMojoDescriptor( plugin, goal, repositoryRequest ); } - public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, RepositoryRequest repositoryRequest ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException, InvalidPluginDescriptorException { - PluginDescriptor pluginDescriptor = loadPlugin( plugin, localRepository, remoteRepositories ); + PluginDescriptor pluginDescriptor = loadPlugin( plugin, repositoryRequest ); MojoDescriptor mojoDescriptor = pluginDescriptor.getMojo( goal ); Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Tue Aug 11 10:29:38 2009 @@ -15,9 +15,7 @@ * the License. */ -import java.util.List; - -import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.descriptor.MojoDescriptor; @@ -30,15 +28,15 @@ public interface PluginManager { // igorf: Way too many declared exceptions! - PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + PluginDescriptor loadPlugin( Plugin plugin, RepositoryRequest repositoryRequest ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, InvalidPluginDescriptorException; // igorf: Way too many declared exceptions! - MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, RepositoryRequest repositoryRequest ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException, InvalidPluginDescriptorException; // igorf: Way too many declared exceptions! - MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, RepositoryRequest repositoryRequest ) throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException, InvalidPluginDescriptorException; void executeMojo( MavenSession session, MojoExecution execution ) Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Tue Aug 11 10:29:38 2009 @@ -24,6 +24,8 @@ import org.apache.maven.Maven; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; +import org.apache.maven.artifact.repository.DefaultRepositoryRequest; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; @@ -162,8 +164,12 @@ private ModelBuildingRequest getModelBuildingRequest( ProjectBuildingRequest configuration, ReactorModelPool reactorModelPool ) { + RepositoryRequest repositoryRequest = new DefaultRepositoryRequest(); + repositoryRequest.setCache( configuration.getRepositoryCache() ); + repositoryRequest.setLocalRepository( configuration.getLocalRepository() ); + ModelResolver resolver = - new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, configuration.getLocalRepository(), + new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, repositoryRequest, configuration.getRemoteRepositories(), reactorModelPool ); ModelBuildingRequest request = new DefaultModelBuildingRequest(); @@ -191,6 +197,7 @@ ArtifactResolutionRequest request = new ArtifactResolutionRequest() .setArtifact( artifact ) + .setCache( configuration.getRepositoryCache() ) .setLocalRepository( configuration.getLocalRepository() ) .setRemoteRepositories( configuration.getRemoteRepositories() ); // FIXME setTransferListener @@ -257,6 +264,7 @@ .setArtifact( artifact ) .setResolveRoot( false ) .setResolveTransitively( true ) + .setCache( request.getRepositoryCache() ) .setLocalRepository( request.getLocalRepository() ) .setRemoteRepositories( project.getRemoteArtifactRepositories() ) .setManagedVersionMap( project.getManagedVersionMap() ); @@ -492,9 +500,12 @@ { if ( configuration.isProcessPlugins() ) { - lifecycle.populateDefaultConfigurationForPlugins( model.getBuild().getPlugins(), - configuration.getLocalRepository(), - project.getPluginArtifactRepositories() ); + RepositoryRequest repositoryRequest = new DefaultRepositoryRequest(); + repositoryRequest.setLocalRepository( configuration.getLocalRepository() ); + repositoryRequest.setRemoteRepositories( project.getPluginArtifactRepositories() ); + repositoryRequest.setCache( configuration.getRepositoryCache() ); + + lifecycle.populateDefaultConfigurationForPlugins( model.getBuild().getPlugins(), repositoryRequest ); } } catch ( LifecycleExecutionException e ) Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java Tue Aug 11 10:29:38 2009 @@ -25,6 +25,7 @@ import java.util.Properties; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryCache; import org.apache.maven.model.Profile; import org.apache.maven.model.building.ModelBuildingRequest; import org.apache.maven.model.building.ModelEventListener; @@ -32,6 +33,9 @@ public class DefaultProjectBuildingRequest implements ProjectBuildingRequest { + + private RepositoryCache repositoryCache; + private ArtifactRepository localRepository; private List<ArtifactRepository> remoteRepositories; @@ -80,6 +84,18 @@ this.topProject = mavenProject; } + public ProjectBuildingRequest setRepositoryCache( RepositoryCache repositoryCache ) + { + this.repositoryCache = repositoryCache; + + return this; + } + + public RepositoryCache getRepositoryCache() + { + return repositoryCache; + } + public ProjectBuildingRequest setLocalRepository( ArtifactRepository localRepository ) { this.localRepository = localRepository; Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java Tue Aug 11 10:29:38 2009 @@ -25,12 +25,18 @@ import org.apache.maven.MavenTransferListener; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryCache; import org.apache.maven.model.Profile; import org.apache.maven.model.building.ModelBuildingRequest; import org.apache.maven.wagon.events.TransferListener; public interface ProjectBuildingRequest { + + ProjectBuildingRequest setRepositoryCache( RepositoryCache repositoryCache ); + + RepositoryCache getRepositoryCache(); + ProjectBuildingRequest setLocalRepository( ArtifactRepository localRepository ); ArtifactRepository getLocalRepository(); Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/RepositoryModelResolver.java Tue Aug 11 10:29:38 2009 @@ -26,6 +26,7 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionResult; @@ -51,14 +52,14 @@ private ResolutionErrorHandler resolutionErrorHandler; - private ArtifactRepository localRepository; + private RepositoryRequest repositoryRequest; private List<ArtifactRepository> remoteRepositories; private ReactorModelPool reactorModelPool; public RepositoryModelResolver( RepositorySystem repositorySystem, ResolutionErrorHandler resolutionErrorHandler, - ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories, + RepositoryRequest repositoryRequest, List<ArtifactRepository> remoteRepositories, ReactorModelPool reactorModelPool ) { if ( repositorySystem == null ) @@ -73,11 +74,11 @@ } this.resolutionErrorHandler = resolutionErrorHandler; - if ( localRepository == null ) + if ( repositoryRequest == null ) { - throw new IllegalArgumentException( "no local repository specified" ); + throw new IllegalArgumentException( "no repository request specified" ); } - this.localRepository = localRepository; + this.repositoryRequest = repositoryRequest; if ( remoteRepositories == null ) { @@ -90,7 +91,7 @@ public ModelResolver newCopy() { - return new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, localRepository, + return new RepositoryModelResolver( repositorySystem, resolutionErrorHandler, repositoryRequest, remoteRepositories, reactorModelPool ); } @@ -127,9 +128,8 @@ { Artifact artifactParent = repositorySystem.createProjectArtifact( groupId, artifactId, version ); - ArtifactResolutionRequest request = new ArtifactResolutionRequest(); + ArtifactResolutionRequest request = new ArtifactResolutionRequest( repositoryRequest ); request.setArtifact( artifactParent ); - request.setLocalRepository( localRepository ); request.setRemoteRepositories( remoteRepositories ); // FIXME setTransferListener ArtifactResolutionResult result = repositorySystem.resolve( request ); Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Tue Aug 11 10:29:38 2009 @@ -32,6 +32,7 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.metadata.ResolutionGroup; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata; import org.apache.maven.artifact.repository.metadata.Metadata; import org.apache.maven.artifact.repository.metadata.RepositoryMetadata; @@ -55,6 +56,7 @@ import org.apache.maven.project.ProjectBuilder; import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.ProjectBuildingRequest; +import org.apache.maven.repository.legacy.metadata.DefaultMetadataResolutionRequest; import org.apache.maven.repository.legacy.metadata.MetadataResolutionRequest; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.annotations.Component; @@ -88,13 +90,6 @@ @Requirement private MavenMetadataCache cache; - public ResolutionGroup retrieve( MetadataResolutionRequest request ) - throws ArtifactMetadataRetrievalException - { - return retrieve( request.getArtifact(), request.getLocalRepository(), request.getRemoteRepositories(), - request.isResolveManagedVersions() ); - } - public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws ArtifactMetadataRetrievalException @@ -106,6 +101,19 @@ List<ArtifactRepository> remoteRepositories, boolean resolveManagedVersions ) throws ArtifactMetadataRetrievalException { + MetadataResolutionRequest request = new DefaultMetadataResolutionRequest(); + request.setArtifact( artifact ); + request.setLocalRepository( localRepository ); + request.setRemoteRepositories( remoteRepositories ); + request.setResolveManagedVersions( resolveManagedVersions ); + return retrieve( request ); + } + + public ResolutionGroup retrieve( MetadataResolutionRequest request ) + throws ArtifactMetadataRetrievalException + { + Artifact artifact = request.getArtifact(); + // // If we have a system scoped artifact then we do not want any searching in local or remote repositories // and we want artifact resolution to only return the system scoped artifact itself. @@ -114,8 +122,10 @@ { return new ResolutionGroup( null, null, null ); } - - ResolutionGroup cached = cache.get( artifact, resolveManagedVersions, localRepository, remoteRepositories ); + + ResolutionGroup cached = + cache.get( artifact, request.isResolveManagedVersions(), request.getLocalRepository(), + request.getRemoteRepositories() ); if ( cached != null ) { @@ -142,7 +152,7 @@ } else { - ProjectRelocation rel = retrieveRelocatedProject( artifact, localRepository, remoteRepositories ); + ProjectRelocation rel = retrieveRelocatedProject( artifact, request ); if ( rel == null ) { @@ -188,7 +198,7 @@ Map<String, Artifact> managedVersions = null; - if ( managedDependencies != null && resolveManagedVersions ) + if ( managedDependencies != null && request.isResolveManagedVersions() ) { managedVersions = new HashMap<String, Artifact>(); @@ -201,9 +211,10 @@ } ResolutionGroup result = - new ResolutionGroup( pomArtifact, relocatedArtifact, artifacts, managedVersions, remoteRepositories ); + new ResolutionGroup( pomArtifact, relocatedArtifact, artifacts, managedVersions, request.getRemoteRepositories() ); - cache.put( artifact, resolveManagedVersions, localRepository, remoteRepositories, result ); + cache.put( artifact, request.isResolveManagedVersions(), request.getLocalRepository(), + request.getRemoteRepositories(), result ); return result; } @@ -319,15 +330,25 @@ public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws ArtifactMetadataRetrievalException { - RepositoryMetadata metadata = new ArtifactRepositoryMetadata( artifact ); + MetadataResolutionRequest request = new DefaultMetadataResolutionRequest(); + request.setArtifact( artifact ); + request.setLocalRepository( localRepository ); + request.setRemoteRepositories( remoteRepositories ); + return retrieveAvailableVersions( request ); + } + + public List<ArtifactVersion> retrieveAvailableVersions( MetadataResolutionRequest request ) + throws ArtifactMetadataRetrievalException + { + RepositoryMetadata metadata = new ArtifactRepositoryMetadata( request.getArtifact() ); try { - repositoryMetadataManager.resolve( metadata, remoteRepositories, localRepository ); + repositoryMetadataManager.resolve( metadata, request ); } catch ( RepositoryMetadataResolutionException e ) { - throw new ArtifactMetadataRetrievalException( e.getMessage(), e, artifact ); + throw new ArtifactMetadataRetrievalException( e.getMessage(), e, request.getArtifact() ); } return retrieveAvailableVersionsFromMetadata( metadata.getMetadata() ); @@ -416,8 +437,7 @@ return projectBuilder; } - private ProjectRelocation retrieveRelocatedProject( Artifact artifact, ArtifactRepository localRepository, - List<ArtifactRepository> remoteRepositories ) + private ProjectRelocation retrieveRelocatedProject( Artifact artifact, RepositoryRequest repositoryRequest ) throws ArtifactMetadataRetrievalException { MavenProject project = null; @@ -446,8 +466,9 @@ try { ProjectBuildingRequest configuration = new DefaultProjectBuildingRequest(); - configuration.setLocalRepository( localRepository ); - configuration.setRemoteRepositories( remoteRepositories ); + configuration.setRepositoryCache( repositoryRequest.getCache() ); + configuration.setLocalRepository( repositoryRequest.getLocalRepository() ); + configuration.setRemoteRepositories( repositoryRequest.getRemoteRepositories() ); configuration.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL ); configuration.setProcessPlugins( false ); configuration.setSystemProperties( System.getProperties() ); @@ -509,8 +530,10 @@ List<ArtifactVersion> available = artifact.getAvailableVersions(); if ( available != null && !available.isEmpty() ) { - available = - retrieveAvailableVersions( relocatedArtifact, localRepository, remoteRepositories ); + MetadataResolutionRequest metadataRequest = + new DefaultMetadataResolutionRequest( repositoryRequest ); + metadataRequest.setArtifact( relocatedArtifact ); + available = retrieveAvailableVersions( metadataRequest ); relocatedArtifact.setAvailableVersions( available ); } Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/ProjectDependenciesResolverTest.java Tue Aug 11 10:29:38 2009 @@ -7,6 +7,9 @@ import java.util.Set; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.InvalidRepositoryException; +import org.apache.maven.artifact.repository.DefaultRepositoryRequest; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Exclusion; import org.apache.maven.project.MavenProject; @@ -38,6 +41,15 @@ return "src/test/projects/project-dependencies-resolver"; } + protected RepositoryRequest getRepositoryRequest() + throws InvalidRepositoryException + { + RepositoryRequest request = new DefaultRepositoryRequest(); + request.setLocalRepository( getLocalRepository() ); + request.setRemoteRepositories( getRemoteRepositories() ); + return request; + } + public void testExclusionsInDependencies() throws Exception { @@ -50,13 +62,11 @@ .get(); Set<Artifact> artifactDependencies = - resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), getLocalRepository(), - getRemoteRepositories() ); + resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), getRepositoryRequest() ); assertEquals( 0, artifactDependencies.size() ); artifactDependencies = - resolver.resolve( project, Collections.singleton( Artifact.SCOPE_RUNTIME ), getLocalRepository(), - getRemoteRepositories() ); + resolver.resolve( project, Collections.singleton( Artifact.SCOPE_RUNTIME ), getRepositoryRequest() ); assertEquals( 1, artifactDependencies.size() ); assertEquals( "maven-core-it-support" , artifactDependencies.iterator().next().getArtifactId() ); } @@ -69,8 +79,7 @@ .get(); Set<Artifact> artifactDependencies = - resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), getLocalRepository(), - getRemoteRepositories() ); + resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), getRepositoryRequest() ); assertEquals( 1, artifactDependencies.size() ); } @@ -85,8 +94,7 @@ MavenSession session = createMavenSession( pom, eps ); MavenProject project = session.getCurrentProject(); - resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), getLocalRepository(), - getRemoteRepositories() ); + resolver.resolve( project, Collections.singleton( Artifact.SCOPE_COMPILE ), getRepositoryRequest() ); List<String> elements = project.getCompileClasspathElements(); assertEquals( 2, elements.size() ); Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java Tue Aug 11 10:29:38 2009 @@ -4,6 +4,8 @@ import org.apache.maven.AbstractCoreMavenComponentTestCase; import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.repository.DefaultRepositoryRequest; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.model.Plugin; import org.apache.maven.plugin.descriptor.MojoDescriptor; @@ -38,7 +40,17 @@ { return "src/test/projects/plugin-manager"; } - + + private RepositoryRequest getRepositoryRequest( MavenSession session ) + { + RepositoryRequest request = new DefaultRepositoryRequest(); + + request.setLocalRepository( session.getLocalRepository() ); + request.setRemoteRepositories( session.getCurrentProject().getPluginArtifactRepositories() ); + + return request; + } + public void testPluginLoading() throws Exception { @@ -47,7 +59,7 @@ plugin.setGroupId( "org.codehaus.plexus" ); plugin.setArtifactId( "plexus-component-metadata" ); plugin.setVersion( plexusVersion ); - PluginDescriptor pluginDescriptor = pluginManager.loadPlugin( plugin, session.getLocalRepository(), session.getCurrentProject().getPluginArtifactRepositories() ); + PluginDescriptor pluginDescriptor = pluginManager.loadPlugin( plugin, getRepositoryRequest( session ) ); assertNotNull( pluginDescriptor ); } @@ -61,7 +73,7 @@ plugin.setArtifactId( "plexus-component-metadata" ); plugin.setVersion( plexusVersion ); - MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), session.getCurrentProject().getPluginArtifactRepositories() ); + MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, getRepositoryRequest( session ) ); assertNotNull( mojoDescriptor ); assertEquals( "generate-metadata", mojoDescriptor.getGoal() ); // igorf: plugin realm comes later @@ -225,7 +237,11 @@ ArtifactResolutionResult result = repositorySystem.resolve( request ); */ - List<Artifact> artifacts = pluginManager.getPluginArtifacts( pluginArtifact, plugin, getLocalRepository(), getPluginArtifactRepositories() ); + RepositoryRequest repositoryRequest = new DefaultRepositoryRequest(); + repositoryRequest.setLocalRepository( getLocalRepository() ); + repositoryRequest.setRemoteRepositories( getPluginArtifactRepositories() ); + + List<Artifact> artifacts = pluginManager.getPluginArtifacts( pluginArtifact, plugin, repositoryRequest ); for ( Artifact a : artifacts ) { Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java?rev=803059&r1=803058&r2=803059&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java Tue Aug 11 10:29:38 2009 @@ -25,6 +25,7 @@ import java.util.Set; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.RepositoryRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.lifecycle.LifecycleExecutionException; import org.apache.maven.lifecycle.LifecycleExecutor; @@ -75,7 +76,7 @@ return Collections.emptySet(); } - public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) + public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, RepositoryRequest repositoryRequest ) throws LifecycleExecutionException { }
