1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.report.projectinfo.dependencies;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Provider;
24 import javax.inject.Singleton;
25
26 import org.apache.maven.artifact.Artifact;
27 import org.apache.maven.execution.MavenSession;
28 import org.apache.maven.project.DefaultProjectBuildingRequest;
29 import org.apache.maven.project.MavenProject;
30 import org.apache.maven.project.ProjectBuilder;
31 import org.apache.maven.project.ProjectBuildingException;
32 import org.apache.maven.project.ProjectBuildingRequest;
33 import org.eclipse.aether.RepositorySystem;
34 import org.eclipse.aether.resolution.ArtifactRequest;
35 import org.eclipse.aether.resolution.ArtifactResolutionException;
36 import org.eclipse.aether.resolution.ArtifactResult;
37
38
39
40
41
42
43
44 @Named
45 @Singleton
46 public class RepositoryUtils {
47
48 private final ProjectBuilder projectBuilder;
49
50 private final RepositorySystem repositorySystem;
51
52 private final Provider<MavenSession> sessionProvider;
53
54
55
56
57 @Inject
58 public RepositoryUtils(
59 ProjectBuilder projectBuilder, RepositorySystem repositorySystem, Provider<MavenSession> sessionProvider) {
60 this.projectBuilder = projectBuilder;
61 this.repositorySystem = repositorySystem;
62 this.sessionProvider = sessionProvider;
63 }
64
65
66
67
68
69 public void resolve(Artifact artifact) throws ArtifactResolutionException {
70
71 MavenSession session = sessionProvider.get();
72 MavenProject project = session.getCurrentProject();
73
74 ArtifactRequest request = new ArtifactRequest(
75 org.apache.maven.RepositoryUtils.toArtifact(artifact), project.getRemoteProjectRepositories(), null);
76 ArtifactResult result = repositorySystem.resolveArtifact(session.getRepositorySession(), request);
77
78 artifact.setFile(result.getArtifact().getFile());
79 artifact.setResolved(true);
80 }
81
82
83
84
85
86
87
88
89 public MavenProject getMavenProjectFromRepository(Artifact artifact) throws ProjectBuildingException {
90
91 boolean allowStubModel = false;
92 if (!"pom".equals(artifact.getType())) {
93 allowStubModel = true;
94 }
95
96 MavenSession session = sessionProvider.get();
97
98 ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
99 buildingRequest.setRemoteRepositories(session.getCurrentProject().getRemoteArtifactRepositories());
100 buildingRequest.setProcessPlugins(false);
101
102 return projectBuilder.build(artifact, allowStubModel, buildingRequest).getProject();
103 }
104 }