You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sl...@apache.org on 2019/01/26 13:38:42 UTC
[maven] 01/01: [MNG-5995] Remove dependency to maven-compat (#185)
This is an automated email from the ASF dual-hosted git repository.
slachiewicz pushed a commit to branch MNG-5995
in repository https://gitbox.apache.org/repos/asf/maven.git
commit bb3ec5da71d26d105972392f0a20bc61bc5d8c53
Author: Sylwester Lachiewicz <sl...@apache.org>
AuthorDate: Sat Oct 13 04:16:44 2018 +0200
[MNG-5995] Remove dependency to maven-compat (#185)
No implementation for deprecated Maven 2.x RepositorySystem interface
---
.../apache/maven/bridge/MavenRepositorySystem.java | 100 ++++++++++++++++++++-
.../project/DefaultProjectBuildingHelper.java | 6 +-
2 files changed, 101 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..8558ae4 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,102 @@ public class MavenRepositorySystem
return repoIds;
}
-
-
+
+ /**
+ * Source from org.apache.maven.repository.legacy.LegacyRepositorySystem#getEffectiveRepositories
+ *
+ * @param repositories
+ * @return
+ * @since 3.6.1
+ */
+ 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 );