diff --git a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java index b21e431..d97d0f2 100644 --- a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java +++ b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java @@ -19,6 +19,7 @@ import io.airlift.resolver.internal.ConsoleTransferListener; import io.airlift.resolver.internal.Slf4jLoggerManager; import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; import org.apache.maven.project.DefaultProjectBuildingRequest; import org.apache.maven.project.MavenProject; import org.apache.maven.project.ProjectBuilder; @@ -43,6 +44,7 @@ import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager; import org.sonatype.aether.repository.LocalRepositoryManager; import org.sonatype.aether.repository.RemoteRepository; +import org.sonatype.aether.repository.RepositoryPolicy; import org.sonatype.aether.resolution.ArtifactResult; import org.sonatype.aether.resolution.DependencyRequest; import org.sonatype.aether.resolution.DependencyResolutionException; @@ -60,6 +62,7 @@ import java.util.Map; import java.util.Properties; import java.util.Set; +import java.util.stream.Collectors; import java.util.stream.Stream; import static com.google.common.collect.ImmutableList.toImmutableList; @@ -151,13 +154,14 @@ public List resolvePom(File pomFile) // Hack: avoid using deprecated Maven Central URLs. The Central Repository no longer supports insecure // communication over plain HTTP. ImmutableList.Builder allRepositories = ImmutableList.builder(); - for (RemoteRepository repository : pom.getRemoteProjectRepositories()) { + // Ensure that custom repositories are used first. + for (RemoteRepository repository : repositories) { if (DEPRECATED_MAVEN_CENTRAL_URIS.contains(repository.getUrl())) { repository = new RemoteRepository(repository.getId(), repository.getContentType(), MAVEN_CENTRAL_URI); } allRepositories.add(repository); } - for (RemoteRepository repository : repositories) { + for (RemoteRepository repository : pom.getRemoteProjectRepositories()) { if (DEPRECATED_MAVEN_CENTRAL_URIS.contains(repository.getUrl())) { repository = new RemoteRepository(repository.getId(), repository.getContentType(), MAVEN_CENTRAL_URI); } @@ -195,8 +199,21 @@ private MavenProject getMavenProject(File pomFile) request.setSystemProperties(requiredSystemProperties()); request.setRepositorySession(repositorySystemSession); request.setProcessPlugins(false); - request.setLocalRepository(lrs.createDefaultLocalRepository()); - request.setRemoteRepositories(Arrays.asList(new ArtifactRepository[] {lrs.createDefaultRemoteRepository()}.clone())); + request.setLocalRepository(lrs.createLocalRepository(repositorySystemSession.getLocalRepository().getBasedir())); + List remoteRepositories = repositories.stream() + .map(repo->{ + RepositoryPolicy snp = repo.getPolicy(true); + RepositoryPolicy rel = repo.getPolicy(false); + + return lrs.createArtifactRepository( + repo.getId(), + repo.getUrl(), + null, + new ArtifactRepositoryPolicy(snp.isEnabled(),snp.getUpdatePolicy(),snp.getChecksumPolicy()), + new ArtifactRepositoryPolicy(rel.isEnabled(),rel.getUpdatePolicy(),rel.getChecksumPolicy())); + }) + .collect(Collectors.toList()); + request.setRemoteRepositories(remoteRepositories); ProjectBuildingResult result = projectBuilder.build(pomFile, request); return result.getProject(); }