2011-12-30 62 views
161

如何在不觸發測試的情況下運行maven-release-plugin?如何獲得maven-release-plugin跳過我的測試?

我已經試過

-Dmaven.test.skip=true 

-DskipTests 

-DpreparationGoals=clean 

...但沒有工作。

是的,我知道如果測試未通過,我不應該發佈,但我無法控制讓我的同事編寫可靠的測試。

回答

375

-Darguments="-DskipTests"是你想要的,或者明確配置pom中的分叉執行。

+1

它爲我,感謝和+1但是...... Wny是必要的嗎? – javamonkey79 2012-10-10 17:13:40

+4

IT是必要的,因爲發佈過程會分叉一個新的maven進程,並且tpical -DskipTests不會作爲系統屬性傳遞。 – Eddie 2012-12-03 19:18:19

+4

希望我可以投你'2'。我花了幾個小時試圖讓這個權利......但是1.我錯過了文檔中的某些東西,或者是mvn文檔丟失了什麼? 2.我在我的公司POM中配置了\t \t' true'。仍然沒有工作。什麼工作是你的解決方案。 – 2012-12-11 12:24:29

18

如果你只是想跳過集成測試,這將做到這一點:

-Darguments="-DskipITs" 
36

-Darguments="..."參數傳遞給叉形Maven的過程,但要認識到,這裏有正在使用兩個不同的交換機是非常重要的。 -DskipTests強制maven不運行任何測試,但測試仍然被編譯(如果您對測試jar類型有任何依賴關係,這一點很重要)。 -Dmaven.test.skip=true強制maven甚至不編譯測試,這意味着任何測試罐都不會生成。

所以,你必須使用-Darguments,但跳過測試運行只使用skipTests,以阻止他們編譯使用maven.test.skip

3

跳過整個單元測試,它使用參數

-Dmaven.test.skip =真

,所以如果你想跳過單元測試,這將解決

mvn install -Dmaven.test.skip=true 
mvn package -Dmaven.test.skip=true 

或者你也可以在maven-surefire-plugin中定義skipTests在

的pom.xml

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.12.4</version> 
     <configuration> 
     <skipTests>true</skipTests> 
     </configuration> 
</plugin> 
+2

這個問題是關於Maven發佈插件的,因此這些不是將要使用的Maven目標。 – Jaap 2016-12-19 15:37:57

0

沒有的Maven插件字面上觸發測試編譯或執行。正是這些maven生命週期階段觸發了一個或多個插件的執行,當這些插件將目標限定在特定階段時。

所以,只要執行單個插件的目標就足夠了,而不執行測試:

mvn release:perform 

或項目構建和包裝相結合:

mvn clean package release:perform