|
1 | 1 | /* |
2 | | - * Copyright 2016-2025 DiffPlug |
| 2 | + * Copyright 2016-2026 DiffPlug |
3 | 3 | * |
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | 5 | * you may not use this file except in compliance with the License. |
|
21 | 21 | import java.io.File; |
22 | 22 | import java.util.ArrayList; |
23 | 23 | import java.util.Collection; |
| 24 | +import java.util.Collections; |
24 | 25 | import java.util.List; |
25 | 26 | import java.util.Objects; |
26 | 27 | import java.util.Set; |
27 | 28 |
|
28 | 29 | import org.apache.maven.plugin.logging.Log; |
| 30 | +import org.apache.maven.project.MavenProject; |
29 | 31 | import org.eclipse.aether.RepositorySystem; |
30 | 32 | import org.eclipse.aether.RepositorySystemSession; |
31 | 33 | import org.eclipse.aether.artifact.Artifact; |
@@ -89,6 +91,34 @@ private DependencyResult resolveDependencies(DependencyRequest dependencyRequest |
89 | 91 | } |
90 | 92 | } |
91 | 93 |
|
| 94 | + /** |
| 95 | + * Resolves all dependencies (all scopes) of the given Maven project using the |
| 96 | + * specified artifact repositories. Returns the set of resolved JAR files. |
| 97 | + */ |
| 98 | + public Set<File> resolveProjectDependencies(MavenProject project, List<RemoteRepository> artifactRepositories) { |
| 99 | + List<Dependency> dependencies = project.getDependencies().stream() |
| 100 | + .map(d -> new Dependency( |
| 101 | + new DefaultArtifact(d.getGroupId(), d.getArtifactId(), d.getClassifier(), d.getType(), d.getVersion()), |
| 102 | + d.getScope())) |
| 103 | + .collect(toList()); |
| 104 | + |
| 105 | + if (dependencies.isEmpty()) { |
| 106 | + return Collections.emptySet(); |
| 107 | + } |
| 108 | + |
| 109 | + CollectRequest collectRequest = new CollectRequest(dependencies, null, artifactRepositories); |
| 110 | + DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); |
| 111 | + DependencyResult dependencyResult = resolveDependencies(dependencyRequest); |
| 112 | + |
| 113 | + return dependencyResult.getArtifactResults() |
| 114 | + .stream() |
| 115 | + .map(ArtifactResult::getArtifact) |
| 116 | + .filter(Objects::nonNull) |
| 117 | + .map(Artifact::getFile) |
| 118 | + .filter(Objects::nonNull) |
| 119 | + .collect(toSet()); |
| 120 | + } |
| 121 | + |
92 | 122 | private void logResolved(ArtifactResult artifactResult) { |
93 | 123 | if (log.isDebugEnabled()) { |
94 | 124 | log.debug("Resolved artifact: " + artifactResult); |
|
0 commit comments