Отримайте список основних залежностей org.apache.maven.project.MavenProject


10

Я намагаюся отримати перелік залежностей деяких артефактів Maven із використанням org.apache.maven.project.MavenProject.

Мій код такий.

public List<Dependencies> loadProject() {
    Model mavenModel = new Model();
    mavenModel.setModelVersion("4.0.0");
    mavenModel.setGroupId("org");
    mavenModel.setArtifactId("wso2");
    mavenModel.setVersion("1.0.0");

    addDependency(mavenModel, "com.google.inject", "guice", "4.2.2");
    addDependency(mavenModel, "ch.qos.logback", "logback-classic", "1.2.3");

    MavenProject mavenProject = new MavenProject(mavenModel);

    //******* Need to resolve dependencies of `mavenProject` and *******
    //******* get the list of dependencies of this project.    *******

    return dependencies;
}

private static void addDependency(Model mavenModel, String groupId, String artifactId, String version) {


Dependency dependency = new Dependency();
    dependency.setGroupId(groupId);
    dependency.setArtifactId(artifactId);
    dependency.setVersion(version);
    mavenModel.addDependency(dependency);
}

В основному я намагаюся отримати результати дерева залежності, яке повертається mvn dependency:treeкомандою у вигляді списку програмно.

Приклад артефактів:

  • com.google.inject:guide:4.2.2
  • ch.qos.logback:logback-classic:1.2.3

Список залежностей:

List = [
com.google.inject:guice:jar:4.2.2:compile,
javax.inject:javax.inject:jar:1:compile,
aopalliance:aopalliance:jar:1.0:compile,
com.google.guava:guava:jar:25.1-android:compile,
com.google.code.findbugs:jsr305:jar:3.0.2:compile,
org.checkerframework:checker-compat-qual:jar:2.0.0:compile,
com.google.errorprone:error_prone_annotations:jar:2.1.3:compile,
com.google.j2objc:j2objc-annotations:jar:1.1:compile,
org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile,
ch.qos.logback:logback-classic:jar:1.2.3:compile,
ch.qos.logback:logback-core:jar:1.2.3:compile,
org.slf4j:slf4j-api:jar:1.7.25:compile
]

Аналогічне питання відповідає Tunaki на stackoverflow.com/questions/39638138 / ...
Ніхілу Zurunge

@NikhilZurunge Але тут я не хочу створювати проект Maven, створюючи файл pom. Хочу скористатисяorg.apache.maven.project.MavenProject
Pramodya Mendis

Інформація доступна лише під час складання Maven, що означає в плані Maven. Якщо ви просто прочитали файл Pom, у вас немає цих відомостей .... Немає дозволу на залежністьУправління (якщо ви його використовуєте) тощо
khmarbaise

Хочу знати, чи існує якийсь метод або клас java для вирішення залежностей від MavenProjectоб'єкта
Pramodya Mendis

Відповіді:


1

Ви можете використовувати метод public Set<Artifact> getArtifacts()вашого MavenProjectкласу, який повертає набір артефактів, що представляють усі залежності, які має проект, включаючи перехідні.

Примітка: Зміст є ліниво заселеним, тому залежно від того, які фази мають залежність у деяких областях, не включатимуться. напр. якщо запущена лише фаза компіляції, залежності з тестом обсягу не будуть включені.

Вся інформація надходить із документації, яку ви можете знайти тут .


2
Я думаю, ви припускаєте, що код повинен працювати під час складання Maven (як плагін Maven), але ОП хоче запустити його поза межами запуску Maven.
JF Meier

@JFMeier так, ви праві. Здається, я не маю рішення для цього випадку використання: /
Pramodya Mendis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.