2017-08-18 49 views
1

我在探索Jenkins的分段功能,我想要設計一個快速和精益的設置。基本上,Jenkins提倡使用階段來在構建過程中進行分區,並提供關於構建過程的良好視覺反饋。Maven和Jenkinsfile--跳過以前的階段

所以Jenkinsfile去像

stage("Build") 
bat("mvn compile") 

stage("Test") 
bat("mvn test") 

stage("Deploy") 
bat("mvn deploy") 

這個效果很好,但感覺不對,因爲deploytest都將再次這樣做之前階段的活動。因此,在此設置中,我構建了三次(儘管因沒有更改而跳過編譯)並測試了兩次(在測試和部署運行中)。

當我谷歌周圍我可以找到各種開關,其中一個用於跳過單元測試,但編譯和依賴性解決步驟發生,無論我做什麼。

在這種情況下,我需要在速度和階段之間進行選擇嗎?還是我可以同時選擇?

我的意思是:

stage("Resolve dependencies, build, test and deploy") 
bat("mvn deploy") 

是迄今爲止最快的方法,但它不能在詹金斯交出了漂亮的進度表。

+1

您可以創建[自定義maven生命週期](https://developer.jboss.org/wiki/CreatingACustomLifecycleInMaven) –

+0

使用'-DskipTests'跳過_deploy_階段中的測試。你的應用程序已經編譯好了,應該會自動檢測到。 – StephenKing

回答

0

爲了像Gradle那樣在Maven階段增加build,你可以使用takari-lifecycle maven插件。

因此,一旦插件被應用,您將獲得所有好處。在你的例子中,Test階段將執行mvn test將避免編譯,因爲它是在前一階段編譯的,並且Deploy階段將避免從主源代碼和測試源代碼編譯,但測試將再次執行,因此我建議添加-DskipTests