我目前正在清理一些使用 Maven 的 Java 项目,并使用 NetBeans IDE 来“调试”POM 中的问题。我已经在IDE中设置了Maven 3.0.4作为Maven版本,但是其他开发者或者我们的Continuous Intgeration系统可能有不同的设置。
是否可以直接在 POM 中“强制”特定的 Maven 版本(例如通过使用 Maven 3 特定元素)?
是的,你可以而且你应该这样做。一些 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>
另一种选择是使用 pom 中的先决条件元素,例如:
<project>
...
<prerequisites>
<maven>3.0.0</maven>
</prerequisites>
...
</project>
正如Michal Kalinowski 的回答所指出的那样——这种简单的方法对于儿童项目来说效果不佳。
有关哪种方法最适合您的摘要,请参见此处:enforcing maven 3 - when to use maven enforcer plugin? 何时使用 pom 先决条件元素?
您可以做的最好的事情是使用 Enforcer 插件。这是一个例子:
http ://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html
Maven 本身没有开箱即用的方法来执行此操作。实际上有prerequisites
标签但它不能很好地工作,因为孩子不会继承它。