2012-11-09 39 views
1

如何Maven的配置來支持這種類型的工作流:什麼是這種螞蟻開發工作流程的「maven方式」?

一次性設置調用行家做開發機這樣的一個時間設置爲

  1. 創建的Tomcat的定製版配置爲本申請
  2. 創建開發者計算機上的本地Postgres數據庫
  3. 負載樣品數據存入數據庫
  4. 運行JUnit測試到c onfigure需要其他資源來運行應用程序

集成測試調用行家做的運行集成測試它應該做到以下幾點

  1. 創建一個集成測試分貝
  2. 設置分貝
  3. 針對db運行命令行集成測試
  4. 運行帶有應用程序的tomcat測試版
  5. 來測試應用程序暴露

發行版調用行家的RESTful服務運行命令行JUnit測試做系統

  1. 做所有的步驟集成測試的發佈版本
  2. 生成服務器上使用的資源和配置,而不是生產
  3. 將最終結果存放在git倉庫中,提交併將更改推送到生產

測試版本調用行家做系統

  1. 做一個發佈版本中的所有步驟的測試版本,但與測試服務器配置,配置測試發佈包

我掙扎的主要原因是maven有一個單一的構建生命週期,並且有一個明確的階段序列,不知道我想構建的工作流是否適合maven。

是否可以爲此類工作流配置maven?如果是,maven的關鍵特性是什麼,它允許我想使用maven的四種主要方式的不同配置?

更新我想說的這個工作流程是,我希望能夠像做

mvn setup 
mvn integration 
mvn prod-release 
mvn test-release 

我知道上面的例子看起來像螞蟻,我很長一段時間螞蟻用戶,總的小白與maven。

+1

要使用螞蟻並不丟臉:) – Nachtgold

+0

是的...... :-) –

+0

一個程序員進入瘋狂和絕望使用錯誤的構建工具。 http://www.youtube.com/watch?v=mBmExt184vc#! – ams

回答

2

你可以設置Maven的做的一切......

你可能會使用(休克恐怖)配置文件來實現一些這...

但你並不想這樣做,

您正在關注ANT風格的思維......如果您喜歡那種思維方式,那麼請使用ANT或Gradle,並開心。

如果您想遵循Maven的方式,那麼您將以不同的方式解決問題。

從Maven的方式到來,這裏是我的想法:

  1. 你爲什麼需要一次性設置?我通常有一個run配置文件,動態配置正確的應用程序服務器並在部署應用程序服務器時啓動它,當我點擊^C後撕掉所有內容。通常這涉及啓動一個或兩個數據庫服務器......因此我開發的東西像cassandra-maven-plugin。這樣當我在另一個項目上工作時(可能在10分鐘內),我不必擔心背景數據庫服務器吃掉了我所有筆記本電腦的內存。

  2. 集成測試實際上是微不足道的,當你有上述工作...其實我創建了Maven Failsafe Plugin,使您輕鬆擁有插件運行依賴於集成測試相應的階段。 Maven約定是爲了運行集成測試而具有名爲run-its的配置文件。

  3. 發佈版本與測試版本不同...呃!您應該構建環境不可知的工件。讓他們從他們所在的環境中選擇他們的配置,這樣就不必擔心「測試」構建和「生產」構建之間發生了什麼變化。如果你真的需要捆綁配置,那麼我通常會求助於一個單獨的模塊來獲取不可知論的工件並重新配置所需的配置。這樣就很容易證明你有一個可重複的轉換,並且在QA和OPS的內容之間沒有任何變化。

  4. 我總是讓發佈版本包含集成測試。

所以通常我有我的項目,使得

$ mvn -Prun 

會火起來從零啓動應用程序。擊中^ C將再次把它拆掉一切都回來了,mvn clean或在極端情況下,如果我有一個更復雜的安裝過程,需要一些緩存mvn post-clean(認爲非常乾淨)將刪除任何的run輪廓投入發揮

運行集成測試我通常做

$ mvn -Prun-its verify 

要釋放我通常做

$ mvn release:prepare release:perform -B 

這就是(在我看來)的處理則需要上述步驟的理想方式。

HTH。

BTW,我還沒有專門使用PostgreSQL(通常是我的集成測試和run輪廓可以用純Java數據庫脫身如derbyhsqldb而且由於文物是環境無關,很容易有集成測試/ dev輕量級應用程序服務器注入正確的JDBC URL),所以你可能會遇到一些關於PostgreSQL的問題

+0

Tomcat正在使用加載時間和spring一起編織,這意味着要在tomcat \ lib文件夾中添加一些jar以使其工作,因此需要一次性安裝應用程序服務器。服務器的最終版本包括爲特定服務器(如具有特定IP地址的server.xml,日誌記錄路徑等)配置的生成的tomcat服務器,在context.xml中打開特定的彈簧配置文件...等等。最後的構建是完全可以安裝的系統,而不僅僅是一場戰爭。應用程序使用postgres視圖和存儲過程,因此不能使用德比。搞清楚新手的maven方式很難。 – ams

+0

加載時織入可以通過添加到'/ project/build/plugins/plugin'的合適的''條目進行配置。 –

+0

我正在撰寫一篇可能有所幫助的博客文章。事情是按照maven的方式,直到你不能,然後只要你知道*爲什麼*你不能遵循maven的方式,你應該沒問題。如果您的構建(或其中的部分)遠離maven的方式,那麼對某些/所有構建使用不同的工具也沒有問題。當你產生環境不可知的文物時,Maven效果最好。這並不意味着數據庫不可知的順便說一句,更多的主機名/ DNS/IP地址等不可知論者。 –