Java maven启动postgres服务器
我正在为学校做一个项目,需要在maven项目中用postgresql替换hsqldb 目前,我们通过运行 mvn exec:java-phsqldb 据我所知,这将在pom.xml中查找hsqldb配置文件Java maven启动postgres服务器,java,postgresql,maven,hsqldb,Java,Postgresql,Maven,Hsqldb,我正在为学校做一个项目,需要在maven项目中用postgresql替换hsqldb 目前,我们通过运行 mvn exec:java-phsqldb 据我所知,这将在pom.xml中查找hsqldb配置文件 <profile> <id>hsqldb</id> <build> <plugins> <plugin> <groupId>org.codehaus.mojo<
<profile>
<id>hsqldb</id>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>org.hsqldb.server.Server</mainClass>
<arguments>
<argument>-database.0</argument>
<argument>db/name</argument>
<argument>-dbname.0</argument>
<argument>name</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</profile>
hsqldb
org.codehaus.mojo
execmaven插件
1.2.1
JAVA
org.hsqldb.server.server
-数据库.0
数据库/名称
-dbname.0
名称
所以我需要用postgres设置来关联这一部分,我已经添加了postgres作为依赖项
<mainClass>ServerClass</mainClass>
ServerClass
这是我最大的问题,因为我在postgresql jar中找不到主服务器类我相信您需要这个:
<mainClass>org.postgresql.Driver</mainClass>
org.postgresql.Driver
我相信您需要:
<mainClass>org.postgresql.Driver</mainClass>
org.postgresql.Driver
PostgreSQL不是内存中可嵌入的服务器。它不能只是作为库加载并运行
您需要一些测试线束控制代码来:
临时数据目录initdb
- 根据需要编辑
,方法是追加行,或启用postgresql.conf
并在其中删除文件。如果你只需要一个简单的配置,你可以跳过这一步;像include_dir
这样的东西可以通过环境变量进行设置,其他许多东西可以通过服务器启动命令的端口
标志进行设置-c
- 生成要使用的随机端口号
- 使用Java的
进程
管理启动server-run
一个新的服务器实例。您可以使用postgres-D_datadir
传递自定义配置值,还可以设置环境变量以控制行为-c
- 通过JDBC连接并
,然后运行测试设置创建数据库
- 运行您的测试
- 通过终止您启动的进程来停止服务器
- 删除datadir
postgres
数据库和CREATE
和DROP
数据库)。毕竟,总是需要一些配置:安装或编译PostgreSQL,确保二进制文件位于路径上,等等
另一种选择是使用AmazonRDS:使用AWSRDAPI启动一个新的PostgreSQL实例并将其用于测试。由于安装时间和最短运行时间的原因,除非您的测试运行很长时间,否则这可能不实用,但这是另一种选择,就像Heroku的类似服务一样。PostgreSQL不是内存中可嵌入的服务器。它不能只是作为库加载并运行
您需要一些测试线束控制代码来:
initdb
临时数据目录
- 根据需要编辑
postgresql.conf
,方法是追加行,或启用include_dir
并在其中删除文件。如果你只需要一个简单的配置,你可以跳过这一步;像端口
这样的东西可以通过环境变量进行设置,其他许多东西可以通过服务器启动命令的-c
标志进行设置
- 生成要使用的随机端口号
- 使用Java的
进程管理启动server-runpostgres-D_datadir
一个新的服务器实例。您可以使用-c
传递自定义配置值,还可以设置环境变量以控制行为
- 通过JDBC连接并
创建数据库
,然后运行测试设置
- 运行您的测试
- 通过终止您启动的进程来停止服务器
- 删除datadir
您需要在一个类中使用适当的临时目录处理来执行流程管理,清除不干净的出口(杀死Pg服务器并在异常时删除datadir),等等
如果您找不到可供借用的罐装测试线束代码,我会感到惊讶。我想知道我们是否应该添加一些到PgJDBC并将其捆绑到驱动程序中?如果你发现任何好的东西,或者写任何好的东西,请通过评论这个问题来帮助我,我会考虑把它作为PGJDBC中的一个实用类来考虑。
也就是说,在服务器上已经运行的现有PostgreSQL实例中,在新创建的测试数据库中运行测试更为常见。您只需使用PostgreSQL用户名/密码/主机/端口/数据库配置测试套件(或者让它连接到postgres
数据库和CREATE
和DROP
数据库)。毕竟,总是需要一些配置:安装或编译PostgreSQL,确保二进制文件位于路径上,等等
另一种选择是使用AmazonRDS:使用AWSRDAPI启动一个新的PostgreSQL实例并将其用于测试。由于安装时间和最短运行时间的原因,除非您的测试运行很长时间,否则这可能不实用,但这是另一种选择,Heroku的类似服务也是如此。您无法启动Postgres服务