Есть ли способ просмотреть эти "встроенные" зависимости, чтобы я мог добавить только необходимые зависимости в свой pom.xml?
Нет встроенных зависимостей. Однако при объявлении зависимости от данного артефакта Maven также будет извлекать зависимости этой зависимости транзитивно. Такие зависимости называются 3.4.4. Переходные зависимости :
Транзитивная зависимость - это зависимость зависимости. Если project-a
зависит от project-b
, что, в свою очередь, зависит от project-c
, тогда project-c
считается транзитивной зависимостью project-a
. Если project-c
зависит от project-d
, то project-d
также будет считаться транзитивной зависимостью project-a
.
Так что если вам нужна зависимость в вашем проекте, просто объявите ее (и зависимости этой зависимости будут переходными).
Для визуализации дерева зависимостей проекта лучшим инструментом является mvn dependency:tree
(или любой другой интерфейс, предлагаемый вашей любимой IDE). Это обязательный инструмент для анализа ваших зависимостей и проверки их на предмет правильной конвергенции и потенциальных конфликтов, приводящих к использованию ожидаемой версии.
Например, если я добавлю hibernate-зависимость в pom.xml, то для cglib она не нужна.
На самом деле, это плохой пример, cglib является необязательным зависимостью Hibernate Core, которая объявляется в pom.xml
:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-cglib-repack</artifactId>
<version>2.1_3</version>
<optional>true</optional><!-- think of it as "excluded by default" -->
</dependency>
Hibernate дает вам выбор между javassist и cglib, вы сами решаете, какой из них использовать, и объявляете его явно, следовательно, необязательный статус.
Смотри также