Версии: 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, или если вы хотите получить хороший обзор, см. раздел страница плагинов.