执行maven 3 - 何时使用maven enforcer插件?什么时候使用pom先决条件元素?

Chr*_*now 14 java maven

执行maven 3的两种主要方法似乎是:

  • maven-enforcer-plugin,和
  • pom.xml <prerequisites>元素.

最佳使用方法似乎取决于几个不同的因素.这个问题是为了帮助人们决定哪种方法对他们最有意义.

问题:哪种类型的项目结构最适合maven-enforcer-plugin,哪种类型的项目结构最适合于先决条件.


Maven Enforcer插件示例

<build>
  <plugins>
    <plugin>
      <inherited>true</inherited>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>1.3</version>
        <executions>
          <execution>
            <id>enforce-maven-3</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireMavenVersion>
                  <version>3.0.5</version>
                </requireMavenVersion>                
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
       </executions>
     </plugin>
  </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

Maven POM先决条件示例

<project>
   ...
   <prerequisites>
       <maven>3.0.5</maven>
   </prerequisites>
   ...
</project>
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 14

不推荐使用先决条件,您应该使用enforcer插件.MNG-5297要求更新文档以澄清这一点.

maven-enforcer-pluginFAQ 解释了区别:

为什么我不能只使用pom中的先决条件标签?

先决条件标记旨在供插件等工具使用.它适用于常规项目,但不会遗传给他们的孩子.如果它在父反应堆中设置,那么Maven将进行检查.但是,如果构建其中一个子项,则不执行检查.enforcer插件旨在允许从单个"super-pom"集中控制构建环境,并通过支持范围允许更大的版本规范灵活性.

此外,请注意,先决条件不适用于Maven 3.

  • 您应该根据MNG-5297的最新内容更新您的答案:先决条件不被弃用,它们的目的与强制执行者插件不同. (2认同)