版本:display-plugin-updates不了解maven-enforcer-plugin

时间:2015-03-30 11:18:16

标签: java maven maven-enforcer-plugin

所以,我试图使用某些插件的最新版本。之前我已经使用了先决条件标记,但是许多资源(example)表示应该将其视为已弃用,并且应该使用maven-enforcer-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

使用先决条件标签代替工作。

3 个答案:

答案 0 :(得分:10)

似乎已经报告了此问题here(为了找到此信息,请转到Aleksandr M。)

显然, display-dependency-updates 目标依赖于prerequisites元素来找出当前项目所需的Maven版本并完全忽略了enforcer-plugin,即使不应该正常使用先决条件标记,为了使依赖插件按预期运行,它是必需的。

答案 1 :(得分:6)

为避免此消息,我使用了最新版本的版本-maven-plugin

mvn org.codehaus.mojo:versions-maven-plugin:2.7:display-plugin-updates

请注意,对于maven-plugin以外的所有项目,仍然需要使用maven-enforcer-plugin,对于具有prerequisites包装的项目,仍需要使用maven-plugin标签。

答案 2 :(得分:-2)

Maven 3.X不推荐使用先决条件:

http://jira.codehaus.org/browse/MNG-4840 http://jira.codehaus.org/browse/MNG-5297

此外,如果你打电话

 mvn versions:display-plugin-updates

您没有开始生命周期,而maven-enforcer-plugin的配置与生命周期绑定。

此外,您应该固定您在构建中使用的所有插件版本。

还有一件非常重要的事情(摘自常见问题解答):

  

先决条件标记旨在供插件等工具使用。   它适用于常规项目,但它不会继承给他们   儿童。如果它在父反应堆中设置,则Maven将执行此操作   校验。但是,如果建立了其中一个孩子,则检查不是   执行。 enforcer插件旨在允许集中   从单个&#34; super-pom&#34;控制构建环境,以及   通过支持,允许更大的版本规范灵活性   的范围内。

这意味着只有在您的开发插件中,先决条件才能更好地使用maven-enforcer-plugin路径。对于通常的开发项目,使用maven-enforcer-plugin配置方式强制使用特定的Maven版本。

要了解有关插件更新的信息,我建议您订阅Announcment mailing list,或者如果您希望获得良好的概述,请参阅plugins page