23

我目前正在清理一些使用 Maven 的 Java 项目,并使用 NetBeans IDE 来“调试”POM 中的问题。我已经在IDE中设置了Maven 3.0.4作为Maven版本,但是其他开发者或者我们的Continuous Intgeration系统可能有不同的设置。

是否可以直接在 POM 中“强制”特定的 Maven 版本(例如通过使用 Maven 3 特定元素)?

4

3 回答 3

25

是的,你可以而且你应该这样做。一些 Maven 插件需要 Maven 3 或更新版本。

通过将以下内容添加到您的 maven-enforcer-plugin 来使用pom.xml

<build>
  <plugins>
    <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.5</version>
                </requireMavenVersion>                
              </rules>
              <fail>true</fail>
            </configuration>
          </execution>
       </executions>
     </plugin>
  </plugins>
</build>
于 2012-05-09T07:27:47.537 回答
11

另一种选择是使用 pom 中的先决条件元素,例如:

<project>
   ...
   <prerequisites>
       <maven>3.0.0</maven>
   </prerequisites>
   ...
</project>

正如Michal Kalinowski 的回答所指出的那样——这种简单的方法对于儿童项目来说效果不佳。

有关哪种方法最适合您的摘要,请参见此处:enforcing maven 3 - when to use maven enforcer plugin? 何时使用 pom 先决条件元素?

于 2013-08-04T17:25:36.233 回答
7

您可以做的最好的事情是使用 Enforcer 插件。这是一个例子:
http ://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html

Maven 本身没有开箱即用的方法来执行此操作。实际上有prerequisites标签但它不能很好地工作,因为孩子不会继承它。

于 2012-05-09T07:28:15.233 回答