1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.project;
20
21 import java.io.FileNotFoundException;
22 import java.net.URISyntaxException;
23 import java.util.ArrayList;
24 import java.util.Collection;
25 import java.util.Collections;
26 import java.util.List;
27
28 import org.codehaus.plexus.component.annotations.Component;
29 import org.eclipse.aether.RepositorySystemSession;
30 import org.eclipse.aether.artifact.Artifact;
31 import org.eclipse.aether.impl.ArtifactResolver;
32 import org.eclipse.aether.resolution.ArtifactRequest;
33 import org.eclipse.aether.resolution.ArtifactResolutionException;
34 import org.eclipse.aether.resolution.ArtifactResult;
35 import org.eclipse.aether.transfer.ArtifactNotFoundException;
36
37
38
39
40 @Component(role = ArtifactResolver.class, hint = "classpath")
41 public class ClasspathArtifactResolver implements ArtifactResolver {
42
43 public List<ArtifactResult> resolveArtifacts(
44 RepositorySystemSession session, Collection<? extends ArtifactRequest> requests)
45 throws ArtifactResolutionException {
46 List<ArtifactResult> results = new ArrayList<>();
47
48 for (ArtifactRequest request : requests) {
49 ArtifactResult result = new ArtifactResult(request);
50 results.add(result);
51
52 Artifact artifact = request.getArtifact();
53 if ("maven-test".equals(artifact.getGroupId())) {
54 String scope = artifact.getArtifactId().substring("scope-".length());
55
56 try {
57 artifact = artifact.setFile(ProjectClasspathTest.getFileForClasspathResource(
58 ProjectClasspathTest.dir + "transitive-" + scope + "-dep.xml"));
59 result.setArtifact(artifact);
60 } catch (FileNotFoundException | URISyntaxException e) {
61 throw new IllegalStateException("Missing test POM for " + artifact, e);
62 }
63 } else {
64 result.addException(new ArtifactNotFoundException(artifact, null));
65 throw new ArtifactResolutionException(results);
66 }
67 }
68
69 return results;
70 }
71
72 public ArtifactResult resolveArtifact(RepositorySystemSession session, ArtifactRequest request)
73 throws ArtifactResolutionException {
74 return resolveArtifacts(session, Collections.singleton(request)).get(0);
75 }
76 }