|
|
|
@ -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<org.apache.maven.artifact.repository.ArtifactRepository> 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<Artifact> artifacts = resolveArtifact(new DefaultArtifact(JUNIT_PLATFORM_GROUP_ID,
|
|
|
|
|
JUNIT_PLATFORM_LAUNCHER_ARTIFACT_ID, version, null, "jar", null, handler));
|
|
|
|
|
Set<URL> 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<Artifact> 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());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|