2015-09-22 64 views
1

我們有一個基本的Maven母POM,用於我們所有的項目,這些都是用集成測試進行測試的。然而定製的很大一部分是Maven的發佈插件:Mock Maven發行版

<plugin> 
    <artifactId>maven-release-plugin</artifactId> 
    <configuration> 
     <tagBase>https://my-url</tagBase> 
     <preparationGoals>clean verify org.acme:my-plugin:my-goal</preparationGoals> 
     <completionGoals>org.acme:my-other-plugin:other-goal<completionGoals> 
     <resume>false</resume> 
    </configuration> 
</plugin> 

我試圖通過「發佈:準備」測試它與父POM,它甚至無法通過-DallowTimestampedSnapshots=true被刪除了Can't release project due to non released dependencies

我可以通過「release:prepare -DdryRun = true」來測試,但這甚至不會測試準備目標。所以我唯一能想到的其他方式就是發佈POM,然後嘗試發佈一個任意的項目。所以現在我的版本是1.0.14,已經恢復了大約50次,我不認爲這是正確的方式了。

有什麼方法可以模擬Maven發佈嗎?也許告訴他標記一個本地路徑並讓他在那裏做出改變?而且他也不應該部署到我們的Nexus上,但我現在已經不再挑剔了。

+0

您提到基於Maven Invoker的「集成測試」嗎? – user944849

+0

@ user944849是的。 –

回答

0

我也需要這樣做,並且像我一樣,我對SVN提交或部署到遠程回購沒有興趣 - 在我看來,驗證是其他集成測試的一部分。我認爲maven-release-plugin開發者也會有類似的需求,事實上他們確實需要。他們寫了mock SCM and wagon providers

您可以在release plugin POM個人資料中看到使用的嘲笑,編號爲run-its。請注意,配置使用setupIncludes以確保在運行任何實際測試之前,mock是在本地回購庫中構建和安裝的。

項目本身需要使用模擬。查看integration tests之一,瞭解如何定義scm元素並在Wagon模擬中添加依賴關係。

我使用log verification technique來驗證測試過程中是否執行了合適的執行。

注意:在我鏈接的安裝目錄中有3個模擬。我發現我只需要使用其中的兩個,後綴爲「-dummy」的那些。

0

使用配置文件模塊化您的過程。擁有觸發「準備」操作的配置文件,以及觸發「執行」操作的配置文件,並測試而不是運行發佈插件之前或之後。通過激活配置文件來配置release插件來完成這些工作。

+0

我不想測試'',我想測試準備和完成目標。 –

+1

它從scm標籤中讀取關鍵信息。所有的準備工作都是運行一個普通的構建,然後運行scm過程。所有版本都是scm操作(checkout),然後是mvn -Prelease。沒有scm,沒什麼可測試的。 – bmargulies

+0

你讀過這個問題了嗎?我改變了這些目標並添加了一些其他插件,看看它們是否相互協作並按照正確的順序進行調用是非常重要的。 –