Я видел много сообщений об этом, но позвольте мне сказать, что я не пытаюсь написать плагин. Я делаю анализатор проекта, который должен найти разрешенные зависимости с их путем.
Учитывая pom.xml (в проекте), я хочу узнать все зависимости (транзитивные тоже) с их путями и, если возможно, отсутствующие зависимости.
Получение независимого от версии решения было бы бонусом.
PS: В каждом ответе предлагается использовать exec для запуска команды cli, я уже использую это и хочу найти лучший способ сделать это.
Вы можете использовать плагин зависимостей maven. Эти два, которые я использовал и нашел очень полезными, я упомянул ниже:
dependency:tree
Отображает древовидную структуру всех зависимостей как прямых, так и транзитивных. Обязательно используйте подробный режим.
Ссылка
dependency:list
Отображает все зависимости, используемые в проекте в порядке списка. Я лично не считаю это удобным в разы, когда мне нужно знать, что такое транзиты и которые прямо предназначены для целей лицензирования. Но он имеет свое место, когда вам просто нужно знать, что вы используете или обнаруживать дубликаты библиотек с разными версиями.
Ссылка
Кроме того, есть также анализ, при чтении документации это кажется весьма удобным, но мне нужно будет попробовать это, и я это сделаю.
dependency:analyze
Используйте mvn dependency:tree
. Для программного доступа просто используйте java Process api.
http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html
Процесс Java с потоком ввода/вывода
Также плагины Maven - это простые классы Java. Вы можете загрузить код зависимостей: tree plugin и использовать его/изменить его по своему вкусу.