所以,我试图使用某些插件的最新版本。之前我已经使用了先决条件标记,但是许多资源(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
使用先决条件标签代替工作。
答案 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。