This is an automated email from the ASF dual-hosted git repository. slachiewicz pushed a commit to branch slach-pre-merge-master in repository https://gitbox.apache.org/repos/asf/maven.git
commit 69490e5c833f1d3bb9209872cbfe7dd6a94d3cf4 Author: Sylwester Lachiewicz <slachiew...@apache.org> AuthorDate: Sat Oct 13 04:16:44 2018 +0200 [MNG-5995] Remove dependency to maven-compat --- .../apache/maven/bridge/MavenRepositorySystem.java | 93 +++++++++++++++++++++- .../project/DefaultProjectBuildingHelper.java | 6 +- 2 files changed, 94 insertions(+), 5 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java index 84ad93c..07ffdae 100644 --- a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java +++ b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java @@ -23,8 +23,10 @@ import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -606,8 +608,95 @@ public class MavenRepositorySystem return repoIds; } - - + + public List<ArtifactRepository> getEffectiveRepositories( List<ArtifactRepository> repositories ) + { + if ( repositories == null ) + { + return null; + } + + Map<String, List<ArtifactRepository>> reposByKey = new LinkedHashMap<>(); + + for ( ArtifactRepository repository : repositories ) + { + String key = repository.getId(); + + List<ArtifactRepository> aliasedRepos = reposByKey.get( key ); + + if ( aliasedRepos == null ) + { + aliasedRepos = new ArrayList<>(); + reposByKey.put( key, aliasedRepos ); + } + + aliasedRepos.add( repository ); + } + + List<ArtifactRepository> effectiveRepositories = new ArrayList<>(); + + for ( List<ArtifactRepository> aliasedRepos : reposByKey.values() ) + { + List<ArtifactRepository> mirroredRepos = new ArrayList<>(); + + List<ArtifactRepositoryPolicy> releasePolicies = + new ArrayList<>( aliasedRepos.size() ); + + for ( ArtifactRepository aliasedRepo : aliasedRepos ) + { + releasePolicies.add( aliasedRepo.getReleases() ); + mirroredRepos.addAll( aliasedRepo.getMirroredRepositories() ); + } + + ArtifactRepositoryPolicy releasePolicy = getEffectivePolicy( releasePolicies ); + + List<ArtifactRepositoryPolicy> snapshotPolicies = + new ArrayList<>( aliasedRepos.size() ); + + for ( ArtifactRepository aliasedRepo : aliasedRepos ) + { + snapshotPolicies.add( aliasedRepo.getSnapshots() ); + } + + ArtifactRepositoryPolicy snapshotPolicy = getEffectivePolicy( snapshotPolicies ); + + ArtifactRepository aliasedRepo = aliasedRepos.get( 0 ); + + ArtifactRepository effectiveRepository = + createArtifactRepository( aliasedRepo.getId(), aliasedRepo.getUrl(), aliasedRepo.getLayout(), + snapshotPolicy, releasePolicy ); + + effectiveRepository.setAuthentication( aliasedRepo.getAuthentication() ); + + effectiveRepository.setProxy( aliasedRepo.getProxy() ); + + effectiveRepository.setMirroredRepositories( mirroredRepos ); + + effectiveRepositories.add( effectiveRepository ); + } + + return effectiveRepositories; + } + + private ArtifactRepositoryPolicy getEffectivePolicy( Collection<ArtifactRepositoryPolicy> policies ) + { + ArtifactRepositoryPolicy effectivePolicy = null; + + for ( ArtifactRepositoryPolicy policy : policies ) + { + if ( effectivePolicy == null ) + { + effectivePolicy = new ArtifactRepositoryPolicy( policy ); + } + else + { + effectivePolicy.merge( policy ); + } + } + + return effectivePolicy; + } + public ArtifactRepository createLocalRepository( MavenExecutionRequest request, File localRepository ) throws Exception { diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java index 3159fac..0bd94a8 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java @@ -33,6 +33,7 @@ import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.bridge.MavenRepositorySystem; import org.apache.maven.classrealm.ClassRealmManager; import org.apache.maven.model.Build; import org.apache.maven.model.Extension; @@ -44,7 +45,6 @@ import org.apache.maven.plugin.MavenPluginManager; import org.apache.maven.plugin.PluginManagerException; import org.apache.maven.plugin.PluginResolutionException; import org.apache.maven.plugin.version.PluginVersionResolutionException; -import org.apache.maven.repository.RepositorySystem; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.component.annotations.Component; @@ -78,7 +78,7 @@ public class DefaultProjectBuildingHelper private ProjectRealmCache projectRealmCache; @Requirement - private RepositorySystem repositorySystem; + private MavenRepositorySystem repositorySystem; @Requirement private MavenPluginManager pluginManager; @@ -92,7 +92,7 @@ public class DefaultProjectBuildingHelper for ( Repository repository : pomRepositories ) { - internalRepositories.add( repositorySystem.buildArtifactRepository( repository ) ); + internalRepositories.add( MavenRepositorySystem.buildArtifactRepository( repository ) ); } repositorySystem.injectMirror( request.getRepositorySession(), internalRepositories );