Return-Path: Delivered-To: apmail-maven-commits-archive@www.apache.org Received: (qmail 34603 invoked from network); 29 Sep 2010 21:32:01 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 29 Sep 2010 21:32:01 -0000 Received: (qmail 21860 invoked by uid 500); 29 Sep 2010 21:32:00 -0000 Delivered-To: apmail-maven-commits-archive@maven.apache.org Received: (qmail 21417 invoked by uid 500); 29 Sep 2010 21:32:00 -0000 Mailing-List: contact commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@maven.apache.org Delivered-To: mailing list commits@maven.apache.org Received: (qmail 21367 invoked by uid 99); 29 Sep 2010 21:32:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Sep 2010 21:32:00 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Sep 2010 21:31:56 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 2B00A23888CF; Wed, 29 Sep 2010 21:31:35 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1002852 - in /maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project: ./ artifact/ Date: Wed, 29 Sep 2010 21:31:35 -0000 To: commits@maven.apache.org From: bentmann@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20100929213135.2B00A23888CF@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: bentmann Date: Wed Sep 29 21:31:34 2010 New Revision: 1002852 URL: http://svn.apache.org/viewvc?rev=1002852&view=rev Log: [MNG-4842] [regression] Repositories discovered in dependency POMs override repositories configured for original resolution request of POM Added: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java - copied, changed from r1002506, maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ReactorModelResolver.java Removed: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ReactorModelResolver.java Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=1002852&r1=1002851&r2=1002852&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Wed Sep 29 21:31:34 2010 @@ -208,9 +208,9 @@ public class DefaultProjectBuilder ReactorModelPool modelPool ) { ModelResolver resolver = - new ReactorModelResolver( configuration.getRepositorySession(), artifactResolver, - repositoryManager, - RepositoryUtils.toRepos( configuration.getRemoteRepositories() ), modelPool ); + new ProjectModelResolver( configuration.getRepositorySession(), artifactResolver, repositoryManager, + RepositoryUtils.toRepos( configuration.getRemoteRepositories() ), + configuration.getRepositoryMerging(), modelPool ); ModelBuildingRequest request = new DefaultModelBuildingRequest(); Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java?rev=1002852&r1=1002851&r2=1002852&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java Wed Sep 29 21:31:34 2010 @@ -105,24 +105,48 @@ public class DefaultProjectBuildingHelpe ProjectBuildingRequest request ) throws InvalidRepositoryException { - List artifactRepositories = new ArrayList(); - Collection repoIds = new HashSet(); + List internalRepositories = new ArrayList(); for ( Repository repository : pomRepositories ) { - artifactRepositories.add( repositorySystem.buildArtifactRepository( repository ) ); - repoIds.add( repository.getId() ); + internalRepositories.add( repositorySystem.buildArtifactRepository( repository ) ); } - repositorySystem.injectMirror( request.getRepositorySession(), artifactRepositories ); + repositorySystem.injectMirror( request.getRepositorySession(), internalRepositories ); + + repositorySystem.injectProxy( request.getRepositorySession(), internalRepositories ); + + repositorySystem.injectAuthentication( request.getRepositorySession(), internalRepositories ); + + List dominantRepositories; + List recessiveRepositories; + + if ( ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT.equals( request.getRepositoryMerging() ) ) + { + dominantRepositories = externalRepositories; + recessiveRepositories = internalRepositories; + } + else + { + dominantRepositories = internalRepositories; + recessiveRepositories = externalRepositories; + } - repositorySystem.injectProxy( request.getRepositorySession(), artifactRepositories ); + List artifactRepositories = new ArrayList(); + Collection repoIds = new HashSet(); - repositorySystem.injectAuthentication( request.getRepositorySession(), artifactRepositories ); + if ( dominantRepositories != null ) + { + for ( ArtifactRepository repository : dominantRepositories ) + { + repoIds.add( repository.getId() ); + artifactRepositories.add( repository ); + } + } - if ( externalRepositories != null ) + if ( recessiveRepositories != null ) { - for ( ArtifactRepository repository : externalRepositories ) + for ( ArtifactRepository repository : recessiveRepositories ) { if ( repoIds.add( repository.getId() ) ) { Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java?rev=1002852&r1=1002851&r2=1002852&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingRequest.java Wed Sep 29 21:31:34 2010 @@ -61,6 +61,8 @@ public class DefaultProjectBuildingReque private boolean resolveDependencies; + private RepositoryMerging repositoryMerging = RepositoryMerging.POM_DOMINANT; + public DefaultProjectBuildingRequest() { processPlugins = true; @@ -301,4 +303,19 @@ public class DefaultProjectBuildingReque return this; } + public DefaultProjectBuildingRequest setRepositoryMerging( RepositoryMerging repositoryMerging ) + { + if ( repositoryMerging == null ) + { + throw new IllegalArgumentException( "repository merge mode not specified" ); + } + this.repositoryMerging = repositoryMerging; + return this; + } + + public RepositoryMerging getRepositoryMerging() + { + return repositoryMerging; + } + } Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java?rev=1002852&r1=1002851&r2=1002852&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingRequest.java Wed Sep 29 21:31:34 2010 @@ -151,4 +151,39 @@ public interface ProjectBuildingRequest ProjectBuildingRequest setRepositorySession( RepositorySystemSession repositorySession ); + /** + * Sets the merge mode used to combine repositories declared in the POM with the repositories specified in this + * request. + * + * @param mode The repository merge mode, must not be {@code null}. + * @return This request for chaining, never {@code null}. + * @see #setRemoteRepositories(List) + */ + ProjectBuildingRequest setRepositoryMerging( RepositoryMerging mode ); + + /** + * Gets the merge mode used to combine repositories declared in the POM with the repositories specified in this + * request + * + * @return The merge mode, never {@code null}. + */ + RepositoryMerging getRepositoryMerging(); + + /** + * The possible merge modes for combining remote repositories. + */ + enum RepositoryMerging + { + + /** + * The repositories declared in the POM have precedence over the repositories specified in the request. + */ + POM_DOMINANT, + + /** + * The repositories specified in the request have precedence over the repositories declared in the POM. + */ + REQUEST_DOMINANT, + } + } Copied: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java (from r1002506, maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ReactorModelResolver.java) URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java?p2=maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java&p1=maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ReactorModelResolver.java&r1=1002506&r2=1002852&rev=1002852&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ReactorModelResolver.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectModelResolver.java Wed Sep 29 21:31:34 2010 @@ -48,7 +48,7 @@ import org.sonatype.aether.util.artifact * * @author Benjamin Bentmann */ -class ReactorModelResolver +class ProjectModelResolver implements ModelResolver { @@ -60,7 +60,7 @@ class ReactorModelResolver private List pomRepositories; - private final List defaultRepositories; + private final List externalRepositories; private final ArtifactResolver resolver; @@ -70,28 +70,32 @@ class ReactorModelResolver private final ReactorModelPool modelPool; - public ReactorModelResolver( RepositorySystemSession session, ArtifactResolver resolver, + private final ProjectBuildingRequest.RepositoryMerging repositoryMerging; + + public ProjectModelResolver( RepositorySystemSession session, ArtifactResolver resolver, RemoteRepositoryManager remoteRepositoryManager, List repositories, - ReactorModelPool modelPool ) + ProjectBuildingRequest.RepositoryMerging repositoryMerging, ReactorModelPool modelPool ) { this.session = session; this.resolver = resolver; this.remoteRepositoryManager = remoteRepositoryManager; this.pomRepositories = new ArrayList(); - this.defaultRepositories = repositories; + this.externalRepositories = repositories; this.repositories = repositories; + this.repositoryMerging = repositoryMerging; this.repositoryIds = new HashSet(); this.modelPool = modelPool; } - private ReactorModelResolver( ReactorModelResolver original ) + private ProjectModelResolver( ProjectModelResolver original ) { this.session = original.session; this.resolver = original.resolver; this.remoteRepositoryManager = original.remoteRepositoryManager; this.pomRepositories = original.pomRepositories; - this.defaultRepositories = original.defaultRepositories; + this.externalRepositories = original.externalRepositories; this.repositories = original.repositories; + this.repositoryMerging = original.repositoryMerging; this.repositoryIds = new HashSet( original.repositoryIds ); this.modelPool = original.modelPool; } @@ -106,10 +110,17 @@ class ReactorModelResolver List newRepositories = Collections.singletonList( convert( repository ) ); - pomRepositories = - remoteRepositoryManager.aggregateRepositories( session, pomRepositories, newRepositories, true ); - repositories = - remoteRepositoryManager.aggregateRepositories( session, pomRepositories, defaultRepositories, false ); + if ( ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT.equals( repositoryMerging ) ) + { + repositories = remoteRepositoryManager.aggregateRepositories( session, repositories, newRepositories, true ); + } + else + { + pomRepositories = + remoteRepositoryManager.aggregateRepositories( session, pomRepositories, newRepositories, true ); + repositories = + remoteRepositoryManager.aggregateRepositories( session, pomRepositories, externalRepositories, false ); + } } private static RemoteRepository convert( Repository repository ) @@ -145,7 +156,7 @@ class ReactorModelResolver public ModelResolver newCopy() { - return new ReactorModelResolver( this ); + return new ProjectModelResolver( this ); } public ModelSource resolveModel( String groupId, String artifactId, String version ) Modified: maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=1002852&r1=1002851&r2=1002852&view=diff ============================================================================== --- maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original) +++ maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Wed Sep 29 21:31:34 2010 @@ -573,6 +573,7 @@ public class MavenMetadataSource configuration.setRemoteRepositories( repositoryRequest.getRemoteRepositories() ); configuration.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL ); configuration.setProcessPlugins( false ); + configuration.setRepositoryMerging( ProjectBuildingRequest.RepositoryMerging.REQUEST_DOMINANT ); configuration.setSystemProperties( getSystemProperties() ); configuration.setRepositorySession( legacySupport.getRepositorySession() );