versions:display-plugin-updates 不理解 maven-enforcer-plugin
versions:display-plugin-updates does not understand 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 versions: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
改为使用先决条件标签。
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 的配置绑定到生命周期。
此外,您应该固定您在构建中使用的插件的所有版本。
还有一件非常重要的事情(摘自常见问题解答):
The prerequisites tag was designed to be used by tools like plugins.
It will work for regular projects, but it isn't inherited to their
children. If it is set in a parent reactor, then Maven will do the
check. However if one of the children are built, the check is not
performed. The enforcer plugin is designed to allow centralized
control over the build environment from a single "super-pom", and to
allow greater flexibility in version specification by supporting
ranges.
这意味着只有当您开发插件时,先决条件确实对使用 maven-enforcer-plugin 路径有一定的意义。对于通常的开发项目,使用 maven-enforcer-plugin 配置方式来强制特定的 Maven 版本。
为了及时了解插件更新,我建议您订阅 Announcment mailing list or if you like to get a good overview see the plugins page。
似乎已报告此问题 here (credits go to 找到了这个)。
显然,display-dependency-updates 目标依赖于 prerequisites
元素来找出当前项目所需的 Maven 版本,并且完全忽略了 enforcer-插件,即使不应该正常使用先决条件标签,但为了使依赖插件按预期运行,它是必需的。
为避免出现此消息,我使用最新版本的 versions-maven-plugin
mvn org.codehaus.mojo:versions-maven-plugin:2.7:display-plugin-updates
请注意,它仍然需要对 maven-plugin
项目以外的所有项目使用 maven-enforcer-plugin,或者对具有 maven-plugin
包装的项目使用 prerequisites
标签。
所以,我正在尝试使用一些插件的最新版本。早些时候我使用了先决条件标签,但很多资源 (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 versions: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
改为使用先决条件标签。
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 的配置绑定到生命周期。
此外,您应该固定您在构建中使用的插件的所有版本。
还有一件非常重要的事情(摘自常见问题解答):
The prerequisites tag was designed to be used by tools like plugins. It will work for regular projects, but it isn't inherited to their children. If it is set in a parent reactor, then Maven will do the check. However if one of the children are built, the check is not performed. The enforcer plugin is designed to allow centralized control over the build environment from a single "super-pom", and to allow greater flexibility in version specification by supporting ranges.
这意味着只有当您开发插件时,先决条件确实对使用 maven-enforcer-plugin 路径有一定的意义。对于通常的开发项目,使用 maven-enforcer-plugin 配置方式来强制特定的 Maven 版本。
为了及时了解插件更新,我建议您订阅 Announcment mailing list or if you like to get a good overview see the plugins page。
似乎已报告此问题 here (credits go to
显然,display-dependency-updates 目标依赖于 prerequisites
元素来找出当前项目所需的 Maven 版本,并且完全忽略了 enforcer-插件,即使不应该正常使用先决条件标签,但为了使依赖插件按预期运行,它是必需的。
为避免出现此消息,我使用最新版本的 versions-maven-plugin
mvn org.codehaus.mojo:versions-maven-plugin:2.7:display-plugin-updates
请注意,它仍然需要对 maven-plugin
项目以外的所有项目使用 maven-enforcer-plugin,或者对具有 maven-plugin
包装的项目使用 prerequisites
标签。