我想创建一个集成测试,它需要一个正在运行的PostgreSQL服务器。是否有可能在Maven构建中启动服务器,并在测试完成时停止它(在我认为的单独过程中)?假定PostgreSQL服务器没有安装在机器上。我可以在Maven构建中使用PostgreSQL吗?
回答
我开始写一个插件用于此目的:
https://github.com/adrianboimvaser/postgresql-maven-plugin
这是在一个非常早期的阶段,缺乏文档,但大多工作。 我已经向Maven Central发布了0.1版本。
我还将所有平台的PostgreSQL二进制发行版发布为maven工件。 您可以在插件的集成测试中找到使用模式。
干杯!
辉煌,这正是我还在寻找什么! – yegor256 2013-09-01 13:52:51
不是我所知。但是,您可以使用启动服务器的run a remote command。
我认为通常的情况是有一个正在运行的集成测试数据库,而不是关闭/重新构建之间。
但是,如果你真的想要你可以设置你的持续集成服务器启动/停止数据库。
是的,我真的很想。我该如何从Maven做到这一点?有没有PostreSQL的插件?我需要安装它,启动,运行测试,停止,卸载。 – yegor256 2011-06-15 23:02:31
您试图将maven推向远远超出预期的信封范围,因此在它工作之前,您会受到相当程度的伤害。
幸运的是,postgresql可以下载为zip压缩文件。
如上所述,maven可以使用ant任务来扩展其范围。 Ant有大量的任务来解压缩文件,并运行命令。该序列将如下所示:在一个公知的目录
- 解压postgresql-xxx.zip - > INSTALL_DIR
- 创建一个数据目录 - > DATA_DIR
- /bin中/ INIT-分贝-D
- /斌/ Postgres的-D
- /斌/ CREATE_DB -EUNICODE测试
这应该给你一个测试数据库运行的服务器。
其他问题:创建一个用户,安全性(你可能想通过TCP/IP连接,但这种默认是禁用的,如果我记得正确的,这需要启动数据库之前编辑配置文件)
..
祝你好运。
谢谢,有道理。 Postregsql在Maven Central中可用作ZIP压缩文件? – yegor256 2011-06-16 18:18:44
不,从postgresql网站:http://www.postgresql.org/download/ – 2011-06-16 21:35:01
它现在,但不是正式支持: com.github.adrianboimvaser:postgresql-dist:9.2.4 – adrianboimvaser 2013-08-31 23:14:41
您听起来像是在尝试构建完整的持续集成环境。您应该考虑使用完整的CI工具,例如Cruise Control或Bamboo。
我之前完成的工作是设置一个可从CI服务器访问的专用CI数据库,然后有一系列bash/python /任何脚本作为After Successful Build步骤运行,然后可以运行无论你喜欢什么额外的整合任务将它与liquibase这样的东西配对,你可以清除CI数据库,并确保每次构建都能够使用最新的模式。
只是带来了一些新的视角此事:
你也可以启动PostgreSQL数据库作为泊坞窗实例。 Docker的插件生态系统似乎仍然处于不断变化之中,因此您可能需要自己决定哪个适合。这里有几个环节,以加快搜索:
- 1. 我可以使用Gradle maven插件创建Maven POM-only(BOM)构建以部署到Nexus吗?
- 2. 我可以在Ant中使用远程构建文件吗?
- 3. 我可以使用ScriptableObject在Java中构建Rhino JavaAdapter吗?
- 4. 我可以在Maven之外使用Maven仓库管理器吗?
- 5. 我可以在OpenStreetMap中使用PostgreSQL 8.3.x吗?
- 6. 我可以在android手机中使用postgresql吗?
- 7. 我可以在SELinux中使用.pgpass吗? [centos7,pgagent_96,postgresql 9.6.5]
- 8. 我们可以在构建目标中包含maven pmd插件执行吗?
- 9. 我可以使用Plovr构建Eclipse中的Google Closure项目吗?
- 10. 可以使用VC++构建git吗?
- 11. 我可以使用动态Schema.org标记构建我的html吗?
- 12. 我可以使用更新的API来构建我的apk吗?
- 13. 我可以在Flask中构建两层以上的端点吗?
- 14. 是否可以使用Maven for PHP构建多模块结构?
- 15. 我可以在PostgreSQL HStore值上使用聚合函数吗?
- 16. 使用Maven构建
- 17. 我可以在visual studio中使用C#构建Android应用程序吗
- 18. 我可以继承使用Interface Builder构建的视图吗?
- 19. 我可以使用docker-compose构建一个容器图像吗?
- 20. 我可以使用Mono为ASP.NET Web App构建部署包吗?
- 21. 我可以只解压缩并使用Ractivejs吗? (构建错误)
- 22. 我可以使用Linq从IEnumerables构建元组吗?
- 23. 我可以使用X64构建ARM的gcc吗?
- 24. 我可以使用JDK7与cloudbees构建
- 25. 我可以在不使用Maven的现有项目中使用Spring roo吗?
- 26. 我可以在PHP中使用两种构造方法吗?
- 27. 我可以在Realm Swift中使用异构集合吗?
- 28. 我可以在层次结构中使用DI容器吗?
- 29. 我可以在iOS 8中使用重构故事板吗?
- 30. 我可以在immutable.js中使用解构赋值吗?
可以启动和停止服务器,比方说,在命令行?如果是,那么只需在整合前/整合后测试阶段使用maven-antrun-plugin。 – lexicore 2011-06-15 22:34:39
正如我在问题中提到的 - PostgreSQL服务器在机器上未安装**。 – yegor256 2011-06-15 22:42:21
我从来没有提到在_local_机器上启动/停止服务器。 – lexicore 2011-06-15 22:51:35