in arthur-maven-plugin/src/main/java/org/apache/geronimo/arthur/maven/mojo/NativeImageMojo.java [609:657]
private Stream<org.eclipse.aether.artifact.Artifact> resolveTransitiveDependencies(final org.eclipse.aether.artifact.Artifact artifact) {
final Dependency rootDependency = new Dependency();
rootDependency.setGroupId(artifact.getGroupId());
rootDependency.setArtifactId(artifact.getArtifactId());
rootDependency.setVersion(artifact.getVersion());
rootDependency.setClassifier(artifact.getClassifier());
rootDependency.setType(artifact.getExtension());
final MavenProject fakeProject = new MavenProject();
fakeProject.setRemoteArtifactRepositories(project.getRemoteArtifactRepositories());
fakeProject.setSnapshotArtifactRepository(project.getDistributionManagementArtifactRepository());
fakeProject.setPluginArtifactRepositories(project.getPluginArtifactRepositories());
fakeProject.getDependencies().add(rootDependency);
final DependencyResolutionRequest request = new DefaultDependencyResolutionRequest();
request.setMavenProject(fakeProject);
request.setRepositorySession(repositorySystemSession);
final Collection<org.eclipse.aether.artifact.Artifact> artifacts = new ArrayList<>();
try {
dependenciesResolver.resolve(request).getDependencyGraph().accept(new DependencyVisitor() {
@Override
public boolean visitEnter(org.eclipse.aether.graph.DependencyNode node) {
return true;
}
@Override
public boolean visitLeave(org.eclipse.aether.graph.DependencyNode node) {
final org.eclipse.aether.artifact.Artifact artifact = node.getArtifact();
if (artifact == null) {
if (node.getChildren() != null) {
node.getChildren().stream()
.map(DependencyNode::getArtifact)
.filter(Objects::nonNull)
.forEach(artifacts::add);
} else {
getLog().warn(node + " has no artifact");
}
} else {
artifacts.add(artifact);
}
return true;
}
});
return artifacts.stream().map(NativeImageMojo.this::resolve);
} catch (final DependencyResolutionException e) {
throw new IllegalStateException(e.getMessage(), e);
}
}