Отримайте список основних залежностей 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.