maven start postgres服务器
我正在为学校做一个项目,需要在maven项目中用postgresql替换hsqldb。
目前我们通过运行启动hsql Server
mvn exec:java -P hsqldb
据我所知,这会查找pom.xml中的hsqldb配置文件
hsqldb org.codehaus.mojo exec-maven-plugin 1.2.1 java org.hsqldb.server.Server -database.0 db/name -dbname.0 name
所以我需要使用postgres设置重新发布这部分,我已经添加了postgres作为依赖。
ServerClass
是我最大的问题,因为我无法在postgresql jar中找到主服务器类
PostgreSQL不是内存中的可嵌入服务器。 它不能只作为库加载并运行。
您需要一些测试工具控制代码来:
-
initdb
一个临时datadir -
根据需要编辑
postgresql.conf
,方法是追加行,或者启用include_dir
并删除文件。 如果您只需要一个简单的配置,您可以跳过此步骤; 可以通过环境变量设置port
类的东西,并且可以使用-c
标志将许多其他设置为服务器启动命令。 -
生成要使用的随机端口号
-
启动服务器 – 使用Java的
Process
管理运行postgres -D the_datadir
一个新的服务器实例。 您可以使用-c
传递自定义配置值,也可以设置环境变量来控制行为。 -
通过JDBC和
CREATE DATABASE
连接然后运行您的测试设置 -
运行测试
-
通过终止您启动的进程来停止服务器。
-
删除datadir
你需要在一个具有适当临时目录处理的类中进行进程管理,在不干净的退出时清除(杀死Pg服务器并在exception时删除datadir)等。
如果您无法找到jar装测试安全带代码,我会感到惊讶。 我想知道我们是否应该向PgJDBC添加一些并将其捆绑在驱动程序中? 如果你发现任何好的东西,或写任何好东西,请通过评论这个答案来ping我,我会考虑将它作为PgJDBC中的实用程序类包含在内。
也就是说,更常见的是在已经在服务器上运行的现有PostgreSQL实例中的新创建的测试数据库中运行测试。 您只需使用PostgreSQL用户名/密码/主机/端口/数据库配置您的测试套件(或者让它连接到postgres
数据库并CREATE
和DROP
数据库)。 毕竟,总是需要一些配置:安装或编译PostgreSQL,确保二进制文件在PATH
上等。
另一种选择是使用Amazon RDS:使用AWS RDS API启动新的PostgreSQL实例并将其用于测试。 除非你的测试由于设置时间和最短的运行时间而长时间运行,否则这可能不实用,但它是另一种选择,就像Heroku的类似服务一样。
我相信你需要这个:
org.postgresql.Driver