2016-06-09 91 views
0

我有一個maven項目,我正在運行兩個單獨的版本。如何在maven項目中禁用命令行中的jar創建?

在一個構建中,我想通過禁用其中創建的Maven模塊的jar來保存構建時間(有45個maven模塊)。有一個Maven-Jar-Plugin被用來創建罐子。

我想在命令行中有條件地禁用jar創建,也就是尋找類似於-Dskiptests的東西,雖然默認情況下有一個surefire插件,但用於跳過單元測試。

回答

0

maven-jar-plugindoes not provide任何跳過選項。

但是,有幾種方法可以實現您的要求。

你可能只是跳過它默認(via default mappings)罐子創作,也就是package階段帶來的phase,因此簡單地調用,如果你做

mvn clean test 

附加的階段就沒有意義無論如何不創建一個jar文件:package,install,deploy將不會有任何處理。此外,根據您的集成測試策略(如果有的話),額外的集成階段也可能受到影響。

或者,你可以配置你的pom如下:

<properties> 
    <jar.creation>package</jar.creation> 
</properties> 

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-jar-plugin</artifactId> 
     <version>3.0.0</version> 
     <executions> 
      <execution> 
      <id>default-jar</id> 
      <phase>${jar.creation}</phase> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
</build> 

因此,默認的行爲仍然會提供一個罐子創作,在執行行家如下:

mvn clean install -Djar.creation=false 

反而會跳過罐子的創建。

我們實際上做的:

  • 我們正在重新定義的maven-jar-plugin
  • 我們覆蓋其執行ID的默認執行,因此獲得更多的控制權
  • 我們將其執行階段綁定到可配置(通過屬性)階段
  • 默認階段(屬性值)保持爲package
  • 在命令行時間您仍然可以將其更改爲與標準Maven階段不同的任何值。也就是說,-Djar.creation=none也可以。
+0

@Priyanka.Patil有幫助嗎?你沒有分享任何進一步的反饋,也沒有[接受](http://meta.stackexchange.com/q/5234/314893)。只是檢查。 –

相關問題