[MNG-5995] Remove dependency to maven-compat (#185)

No implementation for deprecated Maven 2.x RepositorySystem interface
This commit is contained in:
Sylwester Lachiewicz 2018-10-13 04:16:44 +02:00
parent 24c762d7c3
commit bb3ec5da71
2 changed files with 101 additions and 5 deletions

View File

@ -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
{

View File

@ -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 );