Skip to content

Commit 50f362e

Browse files
committed
Convert AbstractEclipseTestMojo to use Aether API
1 parent 6c80860 commit 50f362e

File tree

2 files changed

+30
-24
lines changed

2 files changed

+30
-24
lines changed

tycho-surefire/tycho-surefire-plugin/src/main/java/org/eclipse/tycho/surefire/AbstractEclipseTestMojo.java

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,24 +40,24 @@
4040
import java.util.StringJoiner;
4141
import java.util.concurrent.ExecutionException;
4242

43+
import org.apache.maven.RepositoryUtils;
4344
import org.apache.maven.artifact.Artifact;
44-
import org.apache.maven.artifact.resolver.ArtifactResolutionException;
45-
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
46-
import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
47-
import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
4845
import org.apache.maven.model.Dependency;
4946
import org.apache.maven.model.Repository;
5047
import org.apache.maven.plugin.MojoExecutionException;
5148
import org.apache.maven.plugin.MojoFailureException;
5249
import org.apache.maven.plugins.annotations.Component;
5350
import org.apache.maven.plugins.annotations.Parameter;
54-
import org.apache.maven.repository.RepositorySystem;
5551
import org.apache.maven.surefire.api.booter.ProviderParameterNames;
5652
import org.apache.maven.surefire.api.util.ScanResult;
5753
import org.apache.maven.surefire.booter.BooterConstants;
5854
import org.apache.maven.surefire.booter.PropertiesWrapper;
5955
import org.codehaus.plexus.util.FileUtils;
6056
import org.codehaus.plexus.util.cli.CommandLineUtils;
57+
import org.eclipse.aether.RepositorySystem;
58+
import org.eclipse.aether.resolution.ArtifactRequest;
59+
import org.eclipse.aether.resolution.ArtifactResolutionException;
60+
import org.eclipse.aether.resolution.ArtifactResult;
6161
import org.eclipse.equinox.internal.p2.metadata.IRequiredCapability;
6262
import org.eclipse.equinox.p2.metadata.IRequirement;
6363
import org.eclipse.equinox.spi.p2.publisher.PublisherHelper;
@@ -325,9 +325,6 @@ public abstract class AbstractEclipseTestMojo extends AbstractTestMojo {
325325
@Component
326326
protected RepositorySystem repositorySystem;
327327

328-
@Component
329-
private ResolutionErrorHandler resolutionErrorHandler;
330-
331328
@Component(role = TychoProject.class)
332329
private Map<String, TychoProject> projectTypes;
333330

@@ -1208,23 +1205,28 @@ private List<File> getFrameworkExtensions() throws MojoExecutionException {
12081205

12091206
if (frameworkExtensions != null) {
12101207
for (Dependency frameworkExtension : frameworkExtensions) {
1211-
Artifact artifact = repositorySystem.createDependencyArtifact(frameworkExtension);
1212-
ArtifactResolutionRequest request = new ArtifactResolutionRequest();
1213-
request.setArtifact(artifact);
1214-
request.setResolveRoot(true).setResolveTransitively(false);
1215-
request.setLocalRepository(session.getLocalRepository());
1216-
// XXX wrong repositories -- these are user artifacts, not plugin artifacts
1217-
request.setRemoteRepositories(project.getPluginArtifactRepositories());
1218-
request.setOffline(session.isOffline());
1219-
request.setForceUpdate(session.getRequest().isUpdateSnapshots());
1220-
ArtifactResolutionResult result = repositorySystem.resolve(request);
1208+
org.eclipse.aether.artifact.Artifact artifact = new org.eclipse.aether.artifact.DefaultArtifact(
1209+
frameworkExtension.getGroupId(), frameworkExtension.getArtifactId(),
1210+
frameworkExtension.getType(), frameworkExtension.getVersion());
1211+
ArtifactRequest artifactRequest = new ArtifactRequest();
1212+
artifactRequest.setArtifact(artifact);
1213+
artifactRequest.setRepositories(RepositoryUtils.toRepos(project.getRemoteArtifactRepositories()));
1214+
ArtifactResult artifactResult;
12211215
try {
1222-
resolutionErrorHandler.throwErrors(request, result);
1216+
artifactResult = repositorySystem.resolveArtifact(session.getRepositorySession(), artifactRequest);
1217+
if (artifactResult.isResolved()) {
1218+
files.add(artifactResult.getArtifact().getFile());
1219+
} else {
1220+
MojoExecutionException exception = new MojoExecutionException(
1221+
"Failed to resolve framework extension " + frameworkExtension.getManagementKey());
1222+
artifactResult.getExceptions().forEach(exception::addSuppressed);
1223+
throw exception;
1224+
}
12231225
} catch (ArtifactResolutionException e) {
12241226
throw new MojoExecutionException(
12251227
"Failed to resolve framework extension " + frameworkExtension.getManagementKey(), e);
12261228
}
1227-
files.add(artifact.getFile());
1229+
12281230
}
12291231
}
12301232

tycho-surefire/tycho-surefire-plugin/src/main/java/org/eclipse/tycho/surefire/TychoIntegrationTestMojo.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.apache.maven.model.Dependency;
2929
import org.apache.maven.plugin.MojoExecutionException;
3030
import org.apache.maven.plugin.descriptor.PluginDescriptor;
31+
import org.apache.maven.plugins.annotations.Component;
3132
import org.apache.maven.plugins.annotations.LifecyclePhase;
3233
import org.apache.maven.plugins.annotations.Mojo;
3334
import org.apache.maven.plugins.annotations.Parameter;
@@ -50,8 +51,8 @@
5051
* harness bundles. The bundles are resolved from the target platform of the project. Note that the
5152
* test runtime does typically <em>not</em> contain the entire target platform. If there are
5253
* implicitly required bundles (e.g. <code>org.apache.felix.scr</code> to make declarative services
53-
* work), they need to be added manually through an <code>extraRequirements</code> configuration on the
54-
* <code>target-platform-configuration</code> plugin.
54+
* work), they need to be added manually through an <code>extraRequirements</code> configuration on
55+
* the <code>target-platform-configuration</code> plugin.
5556
* </p>
5657
* <p>
5758
* This goal adopts the maven-failsafe paradigm, that works in the following way:
@@ -99,6 +100,9 @@ public class TychoIntegrationTestMojo extends AbstractEclipseTestMojo {
99100
@Parameter(defaultValue = "${localRepository}", required = true, readonly = true)
100101
private ArtifactRepository localRepository;
101102

103+
@Component
104+
protected org.apache.maven.repository.RepositorySystem oldRepositorySystem;
105+
102106
/**
103107
* Configures the packaging type where this mojos applies
104108
*/
@@ -201,7 +205,7 @@ protected boolean useMetadataDirectory(ReactorProject otherProject) {
201205
}
202206

203207
private ArtifactResolutionResult resolveDependency(final Dependency dependency) {
204-
final var artifact = repositorySystem.createDependencyArtifact(dependency);
208+
final var artifact = oldRepositorySystem.createDependencyArtifact(dependency);
205209
final var remoteRepositories = new ArrayList<ArtifactRepository>(32);
206210
remoteRepositories.addAll(pluginRemoteRepositories);
207211
remoteRepositories.addAll(projectRemoteRepositories);
@@ -213,7 +217,7 @@ private ArtifactResolutionResult resolveDependency(final Dependency dependency)
213217
.setResolveTransitively(true)//
214218
.setCollectionFilter(new ProviderDependencyArtifactFilter())//
215219
.setRemoteRepositories(remoteRepositories);
216-
return repositorySystem.resolve(request);
220+
return oldRepositorySystem.resolve(request);
217221
}
218222

219223
private static final class ProviderDependencyArtifactFilter implements ArtifactFilter {

0 commit comments

Comments
 (0)