Как программно перечислять все транзитивные зависимости, в том числе переопределенные в Maven, используя DependencyGraphBuilder?

106
5

Это похоже на другие вопросы (как это), но я хочу иметь возможность сделать это с помощью новейших API. Параметр maven-dependency-plugin: tree verbose устарел и ничего не делает в последнем (2.5.1) коде, поэтому нет хорошего примера того, как это сделать.

спросил(а) 2021-01-19T21:41:10+03:00 2 месяца, 3 недели назад
1
Решение
87

Я считаю Aether класс утилиты из jcabi-aether может помочь вам получить список всех зависимостей любого артефакта Maven, например:


File repo = this.session.getLocalRepository().getBasedir();
Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
JavaScopes.RUNTIME
);

Если вы находитесь вне плагина Maven:

File repo = new File("/tmp/local-repository");
MavenProject project = new MavenProject();
project.setRemoteProjectRepositories(
Arrays.asList(
new RemoteRepository(
"maven-central",
"default",
"http://repo1.maven.org/maven2/"
)
)
);
Collection<Artifact> deps = new Aether(project, repo).resolve(
new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"),
"runtime"
);

Единственная зависимость, в которой вы нуждаетесь:


<dependency>
<groupId>com.jcabi</groupId>
<artifactId>jcabi-aether</artifactId>
<version>0.7.5</version>
</dependency>

ответил(а) 2021-01-19T21:41:10+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема