【问题标题】:enforcing maven 3 - when to use maven enforcer plugin? when to use pom prerequisites element?执行 maven 3 - 何时使用 maven 执行器插件?何时使用 pom 先决条件元素?
【发布时间】:2013-08-05 09:41:35
【问题描述】:

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

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

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

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


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>

Maven POM 先决条件示例

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

【问题讨论】:

    标签: java maven


    【解决方案1】:

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

    maven-enforcer-plugin 常见问题解答explains the difference

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

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

    另外,请注意prerequisites do not work with Maven 3

    【讨论】:

    • JIRA 表明先决条件应该适用于 maven 3.0.2+
    • 你是对的,那里有一个修复,但他们似乎是broken again in 3.1
    • 您应该根据 MNG-5297 的最新内容更新您的答案:先决条件未被弃用,它们的目的与执行器插件不同。
    【解决方案2】:

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

    maven-enforcer-plugin 方法可能更适合如果您有希望从父项继承 maven 3 要求的子项目。 pom prerequisites 不被子项目继承。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-18
      • 2020-01-21
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多