From 4dcfe1766c92884bf8ff62439a57f7a46d7a4462 Mon Sep 17 00:00:00 2001 From: ufolr Date: Sat, 3 Oct 2020 23:14:20 +0800 Subject: [PATCH 1/2] Fix custom repository settings. Set the custom local and remote repository to the ProjectBuildingRequest when get pom's MavenProject. --- .../io/airlift/resolver/ArtifactResolver.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java index b21e431..48b5d2a 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; @@ -195,8 +198,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(); } From 198b4694c9b6d1a948ac64d937a8ab32a46be894 Mon Sep 17 00:00:00 2001 From: ufolr Date: Sat, 3 Oct 2020 23:23:00 +0800 Subject: [PATCH 2/2] Ensure that custom repositories are used first. --- .../src/main/java/io/airlift/resolver/ArtifactResolver.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java index 48b5d2a..d97d0f2 100644 --- a/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java +++ b/resolver/src/main/java/io/airlift/resolver/ArtifactResolver.java @@ -154,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); }