Skip to content

Commit 3e878d5

Browse files
laeubiakurtakov
authored andcommitted
Convert AbstractEclipseTestMojo to use Aether API
1 parent 754f7f3 commit 3e878d5

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
@@ -41,24 +41,24 @@
4141
import java.util.StringJoiner;
4242
import java.util.concurrent.ExecutionException;
4343

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

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

@@ -1209,23 +1206,28 @@ private List<File> getFrameworkExtensions() throws MojoExecutionException {
12091206

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

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)