diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java index 89287a2985..7438dbe8ca 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AbstractAotMojo.java @@ -95,6 +95,10 @@ public abstract class AbstractAotMojo extends AbstractDependencyFilterMojo { @Parameter(property = "spring-boot.aot.compilerArguments") private String compilerArguments; + protected final MavenSession getSession() { + return this.session; + } + @Override public void execute() throws MojoExecutionException, MojoFailureException { if (this.skip) { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessTestAotMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessTestAotMojo.java index 9729c92bc5..c868f56b6b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessTestAotMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/ProcessTestAotMojo.java @@ -26,12 +26,12 @@ import java.util.Arrays; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; +import org.apache.maven.RepositoryUtils; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.DefaultArtifact; import org.apache.maven.artifact.handler.DefaultArtifactHandler; -import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; -import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.resolver.ResolutionErrorHandler; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Component; @@ -39,7 +39,13 @@ import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.ResolutionScope; -import org.apache.maven.repository.RepositorySystem; +import org.eclipse.aether.RepositorySystem; +import org.eclipse.aether.collection.CollectRequest; +import org.eclipse.aether.resolution.ArtifactResult; +import org.eclipse.aether.resolution.DependencyRequest; +import org.eclipse.aether.resolution.DependencyResult; +import org.eclipse.aether.util.artifact.JavaScopes; +import org.eclipse.aether.util.filter.DependencyFilterUtils; /** * Invoke the AOT engine on tests. @@ -97,20 +103,6 @@ public class ProcessTestAotMojo extends AbstractAotMojo { @Parameter(defaultValue = "${project.build.directory}/spring-aot/main/classes", required = true) private File generatedClasses; - /** - * Local artifact repository used to resolve JUnit platform launcher jars. - */ - @SuppressWarnings("deprecation") - @Parameter(defaultValue = "${localRepository}", required = true, readonly = true) - private org.apache.maven.artifact.repository.ArtifactRepository localRepository; - - /** - * Remote artifact repositories used to resolve JUnit platform launcher jars. - */ - @SuppressWarnings("deprecation") - @Parameter(defaultValue = "${project.remoteArtifactRepositories}", required = true, readonly = true) - private List remoteRepositories; - @Component private RepositorySystem repositorySystem; @@ -165,10 +157,10 @@ public class ProcessTestAotMojo extends AbstractAotMojo { String version = getJUnitPlatformVersion(); DefaultArtifactHandler handler = new DefaultArtifactHandler("jar"); handler.setIncludesDependencies(true); - ArtifactResolutionResult resolutionResult = resolveArtifact(new DefaultArtifact(JUNIT_PLATFORM_GROUP_ID, + Set artifacts = resolveArtifact(new DefaultArtifact(JUNIT_PLATFORM_GROUP_ID, JUNIT_PLATFORM_LAUNCHER_ARTIFACT_ID, version, null, "jar", null, handler)); Set fullClassPath = new LinkedHashSet<>(Arrays.asList(classPath)); - for (Artifact artifact : resolutionResult.getArtifacts()) { + for (Artifact artifact : artifacts) { fullClassPath.add(artifact.getFile().toURI().toURL()); } return fullClassPath.toArray(URL[]::new); @@ -185,16 +177,20 @@ public class ProcessTestAotMojo extends AbstractAotMojo { return version; } - private ArtifactResolutionResult resolveArtifact(Artifact artifact) throws Exception { - ArtifactResolutionRequest request = new ArtifactResolutionRequest(); - request.setArtifact(artifact); - request.setLocalRepository(this.localRepository); - request.setResolveTransitively(true); - request.setCollectionFilter(new RuntimeArtifactFilter()); - request.setRemoteRepositories(this.remoteRepositories); - ArtifactResolutionResult result = this.repositorySystem.resolve(request); - this.resolutionErrorHandler.throwErrors(request, result); - return result; + private Set resolveArtifact(Artifact artifact) throws Exception { + CollectRequest collectRequest = new CollectRequest(); + collectRequest.setRoot(RepositoryUtils.toDependency(artifact, null)); + collectRequest.setRepositories(this.project.getRemotePluginRepositories()); + DependencyRequest request = new DependencyRequest(); + request.setCollectRequest(collectRequest); + request.setFilter(DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME)); + DependencyResult dependencyResult = this.repositorySystem + .resolveDependencies(getSession().getRepositorySession(), request); + return dependencyResult.getArtifactResults() + .stream() + .map(ArtifactResult::getArtifact) + .map(RepositoryUtils::toArtifact) + .collect(Collectors.toSet()); } }