Версии: display-plugin-updates не понимает maven-enforcer-plugin
Итак, я пытаюсь использовать последнюю версию некоторых плагинов. Ранее я использовал тег prerequisites-tag, но многие ресурсы (пример) говорят, что его следует считать устаревшим и вместо него следует использовать maven -forcer-plugin. это моя конфигурация:
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce-maven-3</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.0.4</version>
</requireMavenVersion>
</rules>
<fail>true</fail>
</configuration>
</execution>
</executions>
</plugin>
Однако, когда я запускаю версии mvn: display-plugin-updates, я все равно получаю этот текст:
[ERROR] Project does not define required minimum version of Maven.
[ERROR] Update the pom.xml to contain
[ERROR] <prerequisites>
[ERROR] <maven>3.0</maven>
[ERROR] </prerequisites>
[INFO]
[INFO] Require Maven 2.0.6 to use the following plugin updates:
[INFO] maven-jar-plugin ................................................ 2.4
[INFO] maven-shade-plugin ............................................ 1.7.1
[INFO]
[INFO] Require Maven 2.2.1 to use the following plugin updates:
[INFO] maven-jar-plugin ................................................ 2.6
[INFO]
[INFO] Require Maven 3.0 to use the following plugin updates:
[INFO] maven-shade-plugin .............................................. 2.3
Использование тега prerequisites вместо этого работает.
Ответы
Ответ 1
Кажется, что об этой проблеме сообщалось здесь (кредиты идут к Александру М для того, чтобы найти это)
По- видимому, цель отображения-зависимости обновление зависит от prerequisites
элемента, чтобы узнать версию Maven, требуемую в текущем проекте и полностью игнорирует Инфорсер-плагин, даже несмотря на то, предпосылками-тег не следует использовать, как правило, требуется для того, чтобы плагин зависимостей вел себя как ожидалось.
Ответ 2
Чтобы избежать этого сообщения, я использую последнюю версию version-maven-plugin
mvn org.codehaus.mojo:versions-maven-plugin:2.7:display-plugin-updates
Обратите внимание, что она по- прежнему требует либо использования Maven-Инфорсер-плагин для всех, но maven-plugin
проектов или использования prerequisites
тег для проектов с maven-plugin
упаковкой.
Ответ 3
Предварительные условия устарели для Maven 3.X:
http://jira.codehaus.org/browse/MNG-4840
http://jira.codehaus.org/browse/MNG-5297
Кроме того, если вы вызываете
mvn versions:display-plugin-updates
вы не начинаете жизненный цикл, тогда как конфигурация вашего плагина maven-enforcer привязана к жизненному циклу.
Кроме того, вы должны прикрепить все версии плагинов, которые вы используете в своей сборке.
И одна очень важная вещь (выдержка из FAQ):
Тег предварительных условий был разработан для использования такими инструментами, как плагины. Он будет работать для регулярных проектов, но он не унаследован дети. Если он установлен в родительском реакторе, то Maven выполнит проверить. Однако, если один из детей построен, проверка не выполнено. Плагин-исполнитель предназначен для централизованного контролировать среду сборки из одного "супер-пом" и обеспечивают большую гибкость в спецификации версии, поддерживая диапазоны.
Это означает, что только если ваши разрабатываемые плагины предпосылок лучше используют путь maven-enforcer-plugin. Для обычного проекта разработки используйте конфигурацию maven-enforcer-plugin для принудительной настройки определенных версий Maven.
Чтобы получать информацию о обновлении плагинов, я могу порекомендовать подписаться на список рассылки Announcment, или если вы хотите получить хороший обзор, см. раздел страница плагинов.