Как получить все переходные зависимости программно

1

Я видел много сообщений об этом, но позвольте мне сказать, что я не пытаюсь написать плагин. Я делаю анализатор проекта, который должен найти разрешенные зависимости с их путем.

Учитывая pom.xml (в проекте), я хочу узнать все зависимости (транзитивные тоже) с их путями и, если возможно, отсутствующие зависимости.

Получение независимого от версии решения было бы бонусом.

PS: В каждом ответе предлагается использовать exec для запуска команды cli, я уже использую это и хочу найти лучший способ сделать это.

  • 0
    Что вы имеете в виду под отсутствующими зависимостями? Я бы предположил, что проект не будет компилироваться, если есть зависимости, которые не могут быть решены Maven ...
  • 0
    поэтому могут быть локальные зависимости, которые maven не сможет разрешить, если проект будет перемещен с оригинальной машины, верно? Случай с зависимостями maven возможен только в том случае, если проект не может быть скомпилирован.
Показать ещё 3 комментария
Теги:
maven

2 ответа

2
Лучший ответ

Вы можете использовать плагин зависимостей maven. Эти два, которые я использовал и нашел очень полезными, я упомянул ниже:

  1. dependency:tree

Отображает древовидную структуру всех зависимостей как прямых, так и транзитивных. Обязательно используйте подробный режим.
Ссылка

  1. dependency:list

Отображает все зависимости, используемые в проекте в порядке списка. Я лично не считаю это удобным в разы, когда мне нужно знать, что такое транзиты и которые прямо предназначены для целей лицензирования. Но он имеет свое место, когда вам просто нужно знать, что вы используете или обнаруживать дубликаты библиотек с разными версиями.
Ссылка

Кроме того, есть также анализ, при чтении документации это кажется весьма удобным, но мне нужно будет попробовать это, и я это сделаю.

  1. dependency:analyze
  • 0
    Вы имеете в виду системный вызов maven через java? Я уже делаю это, но, кажется, много работы для разбора и ненадежный подход.
  • 0
    Не влияет на вызов командной строки. Вы можете перенаправить его в файл и затем выполнить простой анализ
Показать ещё 1 комментарий
0

Используйте mvn dependency:tree. Для программного доступа просто используйте java Process api.

http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html

Процесс Java с потоком ввода/вывода

Также плагины Maven - это простые классы Java. Вы можете загрузить код зависимостей: tree plugin и использовать его/изменить его по своему вкусу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню