强制执行 3 - 何时使用 maven 执行器插件?何时使用 pom prerequisites element?

2022-09-03 14:27:17

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

  • maven-enforcer-plugin,以及
  • pom.xml元素。<prerequisites>

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

问题:哪些类型的项目结构最适合 maven-enforcer-plugin,哪些类型的项目结构最适合 pom 先决条件。


Maven Enforcer Plugin Example

<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>

Maven POM 先决条件示例

<project>
   ...
   <prerequisites>
       <maven>3.0.5</maven>
   </prerequisites>
   ...
</project>

答案 1

先决条件已弃用,您应该使用执行器插件。MNG-5297 请求更新文档以澄清这一点。

常见问题解答解释了其中的区别maven-enforcer-plugin

为什么我不能在 pom 中使用先决条件标记?

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

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


答案 2

Maven 方法可能更适合于更小、更简单的项目。这种方法的权重会更轻,因为它不需要下载。pom prerequisitesmaven-enforcer-plugin

如果您有子项目,并且希望从父级继承 maven 3 要求,则该方法可能更合适。 不被子项目继承。maven-enforcer-pluginpom prerequisites


推荐