2015-01-14 25 views
0

我知道我可以要求使用maven-enforcer-plugin這樣的特定OS家庭:Maven:如何讓某個操作系統構建?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>check-os</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <phase>validate</phase> 
      <configuration> 
       <rules> 
        <requireOS> 
         <family>unix</family> 
         <message> 
          You should use Unix to build this. 
         </message> 
        </requireOS> 
       </rules> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

但我可以定義多個操作系統(例如Unix和Windows),可用於構建?

找不到任何直接的方法來做到這一點,所以我很欣賞任何解決方法。

+0

發現我什麼也沒找到關於配置多個操作系統或組合規則的規則。但可以用任何期望的參數或參數列表編寫自己的規則: http://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html – gclaussn

回答

2

<requireOS>元素的主要目標是構建平臺相關的,也就是說你需要執行過程中做出一些指令一些基於當前操作系統的操作,因此如果你爲某個操作系統定義了一些插件併爲其他操作系統定義了一些插件,那就沒什麼意義了。

本着這種精神,<requireOS>不允許範圍限制(您不能將多個操作系統定義爲:<requireOS>[windows,linux]</requireOS>)。

同時你還可以編寫自己的自定義規則繼承EnforcerRule,只進行,如果當前的操作系統是不是到你的自定義規則所需的操作系統範圍構建失敗。

已經實施了一條我曾經使用過的規則。您可以查看multiple-os-enforcer-rule project URL,在那裏您可以找到關於如何使用自定義規則的更多詳細信息。

更多關於自定義規則的實施可以在Maven Docs

2

您可以使用配置文件來管理不同操作系統

如:

<profiles> 
<profile> 
    <id>exec-windows</id> 
    <activation> 
    <os> 
     <family>windows</family> 
    </os> 
    </activation> 
    <build> <plugins> .... 
+0

是的,但據我瞭解,這種方式很容易就可以限制一些操作系統的構建。當我想允許一對OS時,我需要聲明本節中不能使用的所有操作系統。正確? –