可以而且Maven POM是否可以指定它是否需要Maven 3或更高版本?

mjn*_*mjn 23 java maven-3 maven

我目前正在对使用Maven的Java项目进行一些清理,并使用NetBeans IDE来"调试"POM中的问题.我在IDE中将Maven 3.0.4设置为Maven版本,但其他开发人员或我们的Continuous Intgeration系统可能有不同的设置.

是否可以直接在POM中"强制执行"特定的Maven版本(例如,使用Maven 3特定元素)?

Oli*_*ver 24

是的,你可以而且你应该.一些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>
Run Code Online (Sandbox Code Playgroud)


Chr*_*now 9

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

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

正如Michal Kalinowski所说- 这种简单的方法对于儿童项目来说效果不佳.

有关哪种方法最适合您的摘要,请参阅此处:强制执行maven 3 - 何时使用maven enforcer插件?什么时候使用pom先决条件元素?


Mic*_*ski 6

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

Maven本身没有开箱即用的方法来做这件事.实际上有prerequisites标签,但它不能很好地工作,因为孩子不会继承它.