Как заставить Maven использовать последние версии некоторых плагинов? - PullRequest
2 голосов
/ 19 ноября 2010

Я просто потерял 2 часа времени из-за ошибки в maven-compiler-plugin v2.0.2, которая была исправлена ​​в версии v2.3.2.

Очевидно, что если вы не укажете версию плагина компилятора Maven, Maven 2.2.1 просто выдаст вам v2.0.2.

Наш проект использует более 15 плагинов Maven. К некоторым из них мы хотим привязать определенную версию, но большую часть (например, плагин компилятора) мы хотели бы обновить, не думая об этом.

Есть ли способ сделать это автоматически с Maven, или мы должны поручить кому-то неблагодарное задание исследовать возможные обновления плагинов Maven каждый месяц, а затем изменять номера версий PluginManagement в нашем родительском POM?

Ответы [ 4 ]

7 голосов
/ 19 ноября 2010

Очевидно, что если вы не укажете версию плагина компилятора Maven, Maven 2.2.1 просто выдаст вам v2.0.2.

Да, начиная с Maven 2.0.9 (см. MNG-3395 ) версии основных и общих плагинов исправлены в super POM и обнаружение отключенных версий плагинов Maven для buildВоспроизводимость .

Наш проект использует более 15 плагинов Maven.К некоторым из них мы хотим привязать определенную версию, но большую часть (например, плагин компилятора) мы хотели бы обновить, не думая об этом.

Как указывалось выше, этоплохая идеяВы просто не хотите, чтобы сборка maven внезапно начинала давать сбой из-за какого-либо обновления плагина.Другими словами, вы должны использовать фиксированные версии, а это не плохая практика .Фактически, Maven 3.0 продвигает эту практику и предупреждает вас, если вы этого не сделаете.А в 3.1, вам нужно будет указать версию (см. MNG-1968 ).

Лично я использую правило Maven Enforcer и его Требование версий плагинов для применения этой практики (что означает, что сборка не удастся, если вы не заблокируете ее).версии плагинов).

Есть ли способ сделать это автоматически с Maven, или нам нужно поручить кому-то неблагодарное занятие по исследованию возможных обновлений плагинов Maven каждый месяц, а затем менять версию PluginManagementчисла в родительском POM?

Как и предполагалось, у Versions Maven Plugin есть цели, позволяющие проверить, есть ли более свежие версии плагинов, зависимостей и т. д. (и заметить, что -cpu устарела в Maven 3.0 и будет удалена из будущих версий).

Но реальный вопрос: почему вы хотите всегда использовать окончательные версии?ИМО, для этого нет веских причин, вам следует обновляться, только если есть что-то, что нужно исправить ( ", если оно не сломано, не исправляйте" ).

Итог: используйте фиксированные версии плагинов и забудьте автоматические обновления, диапазоны версий и т. Д.

6 голосов
/ 19 ноября 2010

Вы можете привязать что-то вроде version-maven-plugin к вашей основной сборке, так что вы получите отчет по каждой сборке, который показывает, обновлены ли ваши плагины.

См.эта ссылка для получения подробной информации о том, как: Обновления плагинов для отображения

Если вы хотите пофантазировать, пусть ваш CI-сервер запускает вывод вашей сборки maven через скрипт для проверки [WARNING] logзаписи, которые сигнализируют о новых версиях, а затем уведомляют соответствующих членов вашей команды по электронной почте или другим уведомлением.

5 голосов
/ 19 ноября 2010

Во второй раз я пишу это сегодня:

Попробуйте использовать флаг -cpu. Выход из mvn -help:

usage: mvn [options] [<goal(s)>] [<phase(s)>]

Options:
 -cpu,--check-plugin-updates            Force upToDate check for any
                                        relevant registered plugins
2 голосов
/ 19 ноября 2010

Вы также можете использовать диапазоны версий в своих плагинах.

...