Как узнать скрытые версии зависимостей и плагинов в Maven?

Нам не нужно указывать версии и другие параметры используемых нами зависимостей и плагинов Maven. Мы можем сделать это только один раз в родительском POM или каким-то другим способом и унаследовать эти свойства в наших дочерних POM.

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

Итак, мои вопросы:

  1. Каковы все возможные способы указать параметры зависимости и плагина в Maven? т.е. где я могу найти номер версии, если его нет ни в плагине в дочернем POM, ни в управлении плагинами в родительском pom?

  2. Есть ли какая-нибудь команда Maven, чтобы узнать, откуда Maven берет эти параметры? Например, я могу использовать команду dependency:tree. Он напечатает список зависимостей, который поможет мне понять зависимость от версии, из-за которой я застрял. Но это хак, и он не может мне помочь с плагинами. Может есть что получше?


person MiamiBeach    schedule 01.10.2014    source источник
comment
На второй вопрос есть ответ здесь: Как найти объявление версии зависимостей Maven, импортированное из спецификации. Подводя итог: используйте mvn help:effective-pom -Dverbose=true с плагином помощи версии 3.2.0+.   -  person Didier L    schedule 31.10.2019


Ответы (1)


Перед выполнением какой-либо команды Maven создает «эффективный POM», см. этот ответ stackoverflow для получения дополнительной информации. Вы можете просмотреть действующий POM для любого проекта, запустив mvn help:effective-pom. Обычно, когда я запускаю эту команду, я перенаправляю вывод в файл, чтобы я мог просматривать и искать его в текстовом редакторе.

Вы спрашивали о конкретных частях POM, зависимостях и плагинах. Вы на правильном пути, вам поможет maven-dependency-plugin. . Чаще всего я использую цели dependency:tree, dependency:resolve и dependency:resolve-plugins. Первые два помогают с зависимостями проекта, последний — с плагинами. Добавьте параметр -U, чтобы заставить Maven обновлять зависимости независимо от значений update policy/repository metadata.

Также полезно при устранении неполадок начинать с пустого локального репозитория.

И последнее, но не менее важное: Maven будет выдавать предупреждения, когда в сборке используется плагин без определенной версии. ВСЕГДА указывайте явную версию, чтобы исправить предупреждение и избежать таких проблем, как эта.

person user944849    schedule 02.10.2014
comment
Большое спасибо! это именно то, что я искал. - person MiamiBeach; 03.10.2014