2015-10-06 117 views
3

是否可以在POM中指定构建项目所需的Maven的最低版本?强制执行最低版本的Maven

由于旧版Maven中的错误导致大文物(> 2GB)被无声截断,我们一直在浪费大量时间来追踪构建项目的人员的问题。不出所料,这些趋势在最终产品中会造成奇怪和破碎的行为。

是的,我们已经说过,3.2.5是我们打算支持的最低版本,但我想知道:如果版本低于这个水平,有没有办法让Maven保释?我认为我可以轻松地编写一个插件来做到这一点,但似乎过度。所以,我希望有一个更简单的方法。

回答

7

您可以使用maven-enforcer-plugin及其enforce目标指定所需要的最小的Maven版本:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.4.1</version> 
    <executions> 
    <execution> 
     <id>enforce-maven</id> 
     <goals> 
     <goal>enforce</goal> 
     </goals> 
     <configuration> 
     <rules> 
      <requireMavenVersion> 
      <version>3.2.5</version> 
      </requireMavenVersion> 
     </rules> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

如果有人试图建立与Maven的版本低于3.2.5项目,构建就会失败。

您可以使用此插件(Java版本,OS ...)执行许多不同的规则;请参阅完整列表on the plugin documentation

+0

非常方便,谢谢! – FatalError

+0

对于那些阅读此答案的人:'3.2.5'是'[3.2.5,]'的一个快捷方式,否则插件将仅限于3.2.5。 –

+0

@ Michael-O是的,这是在这个插件的[range specification](http://maven.apache.org/enforcer/enforcer-rules/versionRanges.html)中指定的。 – Tunaki

0

如果你只需要在Maven版本的先决条件应该已经做的工作​​:

见:https://maven.apache.org/pom.html#Prerequisites

任何不止于此将要求执法插件(见其他答案)。

+2

该字段已弃用,仅限插件使用。不要使用它。 –

+0

感谢您指出:) – wemu