2011-06-15 64 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数据库,并确保每次构建都能够使用最新的模式。

相关问题