Почему эта банка находится на моем пути к классу в проекте maven?

#java #maven

Вопрос:

У меня есть проект maven с некоторыми зависимостями, и полученный артефакт содержит зависимости в виде файлов .jar внутри.

Я мог бы проверить эффективный pom, но это не показывает фактический .имена файлов / классов jar для зависимостей.

Есть ли способ распечатать имена зависимостей .jar?
Это имя всегда ${artifactId}-${version}.jar такое ?

Комментарии:

1. Неверное предположение состоит в том, что jar содержит зависимости. Это исключение, а не способ по умолчанию. Если вы создадите. затененная/жирная банка банка содержит зависимости. По умолчанию это не так.

2. Мой артефакт-это .war, в котором есть папка lib с зависимостями .jar, а не заштрихованная банка.

3. Вы еще не писали так… война-это контейнер, который объединяет в себе несколько банок внутри… Поэтому, чтобы что-то сказать об этом, необходимо знать файл pom, который вы используете для своего файла war… Все внутренние войны jar-это зависимости переходные зависимости, указанные в вашем файле pom…?

4. Да, это зависимости переходные зависимости, приведенные в файле pom, maven помещает их туда.

5. Вы можете посмотреть через maven-dependency-plugin:дерево , которое должно печатать необходимую информацию…

Ответ №1:

Вы можете просмотреть зависимости, используемые в сборке Maven, с помощью плагина зависимостей Maven. Чтобы просмотреть зависимости в виде списка, используйте:

 mvn dependency:list
 

Однако лучшим представлением может быть дерево зависимостей, поскольку оно четко показывает взаимосвязи между импортированными POM зависимостей и транзитивными зависимостями:

 mvn dependency:tree
 

Если вы хотите увидеть необработанный список банок, собранных вместе в вашей сборке, вы также можете использовать copy-dependencies цель плагина зависимостей:

 $ mvn dependency:copy-dependencies -DoutputDirectory="${project.builddir}/bundled-jars" 
$ ls -1 target/bundled-jars
 

Обратите внимание, что пункт назначения заключен в кавычки с $ экранированным, чтобы он мог использовать свойство Maven без вызова подстановки оболочки. Вы также могли бы просто написать -DoutputDirectory=target/bundled-jars .