2015-10-06 340 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