2011-06-15 61 views
3

我想創建一個集成測試,它需要一個正在運行的PostgreSQL服務器。是否有可能在Maven構建中啓動服務器,並在測試完成時停止它(在我認爲的單獨過程中)?假定PostgreSQL服務器沒有安裝在機器上。我可以在Maven構建中使用PostgreSQL嗎?

+0

可以啓動和停止服務器,比方說,在命令行?如果是,那麼只需在整合前/整合後測試階段使用maven-antrun-plugin。 – lexicore 2011-06-15 22:34:39

+0

正如我在問題中提到的 - PostgreSQL服務器在機器上未安裝**。 – yegor256 2011-06-15 22:42:21

+0

我從來沒有提到在_local_機器上啓動/停止服務器。 – lexicore 2011-06-15 22:51:35

回答

5

我開始寫一個插件用於此目的:

https://github.com/adrianboimvaser/postgresql-maven-plugin

這是在一個非常早期的階段,缺乏文檔,但大多工作。 我已經向Maven Central發佈了0.1版本。

我還將所有平臺的PostgreSQL二進制發行版發佈爲maven工件。 您可以在插件的集成測試中找到使用模式。

乾杯!

+0

輝煌,這正是我還在尋找什麼! – yegor256 2013-09-01 13:52:51

0

我認爲通常的情況是有一個正在運行的集成測試數據庫,而不是關閉/重新構建之間。

但是,如果你真的想要你可以設置你的持續集成服務器啓動/停止數據庫。

+0

是的,我真的很想。我該如何從Maven做到這一點?有沒有PostreSQL的插件?我需要安裝它,啓動,運行測試,停止,卸載。 – yegor256 2011-06-15 23:02:31

6

您試圖將maven推向遠遠超出預期的信封範圍,因此在它工作之前,您會受到相當程度的傷害。

幸運的是,postgresql可以下載爲zip壓縮文件。

如上所述,maven可以使用ant任務來擴展其範圍。 Ant有大量的任務來解壓縮文件,並運行命令。該序列將如下所示:在一個公知的目錄

  • 解壓postgresql-xxx.zip - > INSTALL_DIR
  • 創建一個數據目錄 - > DATA_DIR
  • /bin中/ INIT-分貝-D
  • /斌/ Postgres的-D
  • /斌/ CREATE_DB -EUNICODE測試

這應該給你一個測試數據庫運行的服務器。

其他問題:創建一個用戶,安全性(你可能想通過TCP/IP連接,但這種默認是禁用的,如果我記得正確的,這需要啓動數據庫之前編輯配置文件)

..

祝你好運。

+0

謝謝,有道理。 Postregsql在Maven Central中可用作ZIP壓縮文件? – yegor256 2011-06-16 18:18:44

+0

不,從postgresql網站:http://www.postgresql.org/download/ – 2011-06-16 21:35:01

+0

它現在,但不是正式支持: com.github.adrianboimvaser:postgresql-dist:9.2.4 – adrianboimvaser 2013-08-31 23:14:41

0

您聽起來像是在嘗試構建完整的持續集成環境。您應該考慮使用完整的CI工具,例如Cruise Control或Bamboo。

我之前完成的工作是設置一個可從CI服務器訪問的專用CI數據庫,然後有一系列bash/python /任何腳本作爲After Successful Build步驟運行,然後可以運行無論你喜歡什麼額外的整合任務將它與liquibase這樣的東西配對,你可以清除CI數據庫,並確保每次構建都能夠使用最新的模式。

相關問題