“项目未定义所需的 Maven 最低版本”与 versions-maven-plugin 2.7

sys*_*463 7 maven-3 maven maven-enforcer-plugin versions-maven-plugin

我在执行时遇到以下错误mvn versions:display-plugin-updates。基于此讨论,这已在 2.6 中修复,但我使用的是 2.7(尝试使用 2.6 但没有成功)。

[ERROR] Project does not define required minimum version of Maven.
[ERROR] Update the pom.xml to contain maven-enforcer-plugin to
[ERROR] force the Maven version which is needed to build this project.
[ERROR] See https://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
[ERROR] Using the minimum version of Maven: 3.0.5
Run Code Online (Sandbox Code Playgroud)

这是我的<pluginManager>插件:

<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>3.0.0-M2</version>
      <executions>
        <execution>
          <id>enforce-versions</id>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <requireMavenVersion>
                <version>3.5.4</version>
              </requireMavenVersion>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>versions-maven-plugin</artifactId>
      <version>2.7</version>
      <configuration>
        <generateBackupPoms>false</generateBackupPoms>
      </configuration>
    </plugin>
  </plugins>
</pluginManagement>
Run Code Online (Sandbox Code Playgroud)

gjo*_*anv 9

即使你有pluginManagement一个给定的插件,你仍然需要在你的 pom 的build->plugins部分声明插件以使配置生效。虽然一些插件,例如maven-compiler-plugin默认添加到项目中,但显然不是这种情况maven-enforcer-plugin(如您的实验所示)。

我不确定是否有不需要显式添加的插件列表,但我认为它是最常见的插件,如 maven-surefire-plugin 和 maven-clean-plugin。