2014-01-02 3 views
1

Я создаю приложение Java (web) с Maven и Eclipse.Как найти родителя транзитивной зависимости Maven

Когда я смотрю в моем .war файл я могу увидеть следующие библиотеки протоколирования там:

log4j-1.2.14.jar 
log4j-1.2.17.jar 
slf4j-api-1.7.5.jar 
slf4j-log4j12-1.7.5.jar 

я не объявил эти библиотеки в моем pom.xml, так что они, вероятно, являются переходной зависимостью (т.е. зависимости от моих зависимостей) ,

Как узнать, какие из моих зависимостей зависят от этих библиотек?

Я попытался использовать плагин mvn dependency:tree, но он не отображает ни одного из этих .jar s.

В Eclipse узел Java Resources > Libraries > Maven Dependencies также не отображает их. Хотя, что любопытно, он показывает другие транзитивные зависимости моего проекта.

+0

С помощью eclipse вы должны попытаться отредактировать pom. Есть специальная вкладка «Зависимости». Оттуда вы должны увидеть свои родительские зависимости +, вы можете выбрать, какую версию зависимости вы хотите сохранить. –

+0

@Olivier @Evgeniy На вкладке «Иерархия зависимостей» действительно есть дерево зависимостей. Но моих '.jar' не существует. – Alexey

+0

Опубликуйте свой файл POM.Кажется маловероятным, что Maven заполнит военный файл банкой, которая не появляется в дереве зависимостей –

ответ

2

Open pom.xml в Eclipse, и перейдите на вкладку Dependency Hierarchy

+0

Евгений, спасибо вам за эту идею. На вкладке «Иерархия зависимостей» действительно есть дерево зависимостей. Но моих '.jar' не существует. – Alexey

+0

Перейдите в Фильтр в верхнем правом углу иерархии зависимостей Windows и введите свой артефакт. Во время ввода это отфильтрует остальные и покажет, какие артефакты находятся в их дереве. – khmarbaise

+0

@khmarbaise фильтр возвращает пустой набор. Их там нет. – Alexey

1

! [Введите описание изображения здесь] [1]

Он должен показать вам дерево зависимостей на вкладке Зависимости иерархии. Евгений Дорофеев прав. Нечто похожее на скриншот прилагается

вам, вероятно, придется расширять все.

EDIT: Уточненный ответ. Это немного странно. Но вот что я нашел.

Если вы идете в http://mvnrepository.com/artifact/log4j/log4j/1.2.17

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

Зависимость springframework для web-mvc 3.2.4 загружает пружинный сердечник, а зависимость весеннего ядра использует log4j.

+0

Hrishikesh, я уверен, что они не находятся в этом дереве зависимостей. – Alexey

+0

Я вижу, это странно. Выяснили причину загрузки зависимостей через mvnrepository.com. Обновлен ответ – Hrishikesh

+0

Хришикеш, спасибо. Ваш ответ проясняет ситуацию. Я обновил свой вопрос. Но все же, я хотел бы знать, как проще построить дерево зависимостей, чем веб-поиск :) – Alexey

2

Если вы хотите, чтобы полагаться на мавенна только вы можете взять более близкий взгляд на плагин зависимостей, вот два примера:

mvn dependency:tree -Dverbose покажет более подробную информацию - особенно если артефакт будет опущено для противоречия с другой версией артефактов (например, проблема конвергенции). Он также покажет вам хирачи со всеми транзитивными зависимостями.

Чтобы иметь конкретный артефакт проанализирован (к, например, выяснить, кто обеспечивает определенную переходную зависимость) вы можете указать, например, так:

mvn dependency:tree -Dincludes=com.my.group.id:my-artefact-id:jar:1.0.1 -Dverbose

(Где вы, очевидно, нужно настроить артефакт, тип упаковки и версия в соответствии с вашими потребностями)

Смежные вопросы