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数据库并CREATEDROP数据库)。 毕竟,总是需要一些配置:安装或编译PostgreSQL,确保二进制文件在PATH上等。

另一种选择是使用Amazon RDS:使用AWS RDS API启动新的PostgreSQL实例并将其用于测试。 除非你的测试由于设置时间和最短的运行时间而长时间运行,否则这可能不实用,但它是另一种选择,就像Heroku的类似服务一样。

我相信你需要这个:

 org.postgresql.Driver