2012-02-14 453 views
7

是否可以在多模塊maven項目中運行maven測試版本(mvn clean test)並跳過/忽略特定模塊的測試?像-Dmaven.test.skip=true但是對於特定的模塊而不是所有的模塊?我不想改變surefire <configuration>以包含<skipTests>true</skipTests>作爲我想跳過測試的模塊。我想知道這是否可以從命令行完成。我需要這個,因爲在我的項目中,我有很多模塊,特別是一兩個模塊需要很長時間才能執行測試,所以當我只想測試幾個模塊時,我想跳過這些模塊,但是我沒有做了任何改變。在maven測試版本中爲多模塊maven項目忽略模塊

+1

是。你需要閱讀[maven profiles](http://maven.apache.org/guides/introduction/introduction-to-profiles.html) – 2012-02-14 15:57:54

回答

5

對於你來說改變surefire插件的配置真的是個問題嗎?因爲你可以改變它一次只能在你的模塊...

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <skipTests>${skip.foo.module.tests}</skipTests> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

...並委託skipTests標籤行家屬性的真/假值,由專門的輪廓激活:

<properties> 
    <skip.foo.module.tests>false</skip.foo.module.tests> 
</properties> 

<profiles> 
    <profile> 
     <id>SKIP_FOO_MODULE_TESTS</id> 
     <properties> 
      <skip.foo.module.tests>true</skip.foo.module.tests> 
     </properties> 
    </profile> 
</profiles> 

,讓你可以使用命令行停用美孚模塊測試:

MVN乾淨的測試-P SKIP_FOO_MODULE_TESTS

+0

謝謝Yanflea。雖然這不是我想要的,但是這對我很有用。採用這種方法,我一次只能有一個配置文件,所以如果我想跳過多個模塊的測試,我不能。但無論如何,這將是多少。 – Jay 2012-02-15 18:01:05

+0

您的模塊可以共享相同的父POM,您可以在其中定義您的配置文件。什麼阻止你使用同一個配置文件同時跳過幾個子模塊的測試? – Yanflea 2012-02-15 22:11:19

+0

只有當我想一直跳過相同的模塊時,這纔會起作用。當我開發的時候,有時候我改變了模塊1,這不會影響模塊7和模塊9,所以我想跳過這些模塊,但是在其他時候如果我改變了模塊3,這會影響模塊-7,但不是模塊-9,在這種情況下,我只想跳過模塊-9。對於這種情況,在父級共享配置文件將不起作用。現在,我不想污染我的父母POM與各種配置文件跳過不同模塊和組合的測試。 – Jay 2012-02-16 10:22:50

0

您可以通過配置surefire跳過的配置文件來完成此操作。這樣可以讓您在大多數時間保持測試運行,但是當您想要跳過某個模塊的測試時,您可以調用該配置文件。然後,您可以使用跳過測試排除所有測試,也可以使用排除選項來排除長時間執行的一個或兩個測試。