Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven启动postgres服务器_Java_Postgresql_Maven_Hsqldb - Fatal编程技术网

Java maven启动postgres服务器

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<

我正在为学校做一个项目,需要在maven项目中用postgresql替换hsqldb

目前,我们通过运行

mvn exec:java-phsqldb

据我所知,这将在pom.xml中查找hsqldb配置文件

<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

您需要在一个类中使用适当的临时目录处理来执行流程管理,清除不干净的出口(杀死Pg服务器并在异常时删除datadir),等等

如果您找不到可供借用的罐装测试线束代码,我会感到惊讶。我想知道我们是否应该添加一些到PgJDBC并将其捆绑到驱动程序中?如果你发现任何好的东西,或者写任何好的东西,请通过评论这个问题来帮助我,我会考虑把它作为PGJDBC中的一个实用类来考虑。 也就是说,在服务器上已经运行的现有PostgreSQL实例中,在新创建的测试数据库中运行测试更为常见。您只需使用PostgreSQL用户名/密码/主机/端口/数据库配置测试套件(或者让它连接到
postgres
数据库和
CREATE
DROP
数据库)。毕竟,总是需要一些配置:安装或编译PostgreSQL,确保二进制文件位于
路径上,等等


另一种选择是使用AmazonRDS:使用AWSRDAPI启动一个新的PostgreSQL实例并将其用于测试。由于安装时间和最短运行时间的原因,除非您的测试运行很长时间,否则这可能不实用,但这是另一种选择,就像Heroku的类似服务一样。

PostgreSQL不是内存中可嵌入的服务器。它不能只是作为库加载并运行

您需要一些测试线束控制代码来:

  • initdb
    临时数据目录

  • 根据需要编辑
    postgresql.conf
    ,方法是追加行,或启用
    include_dir
    并在其中删除文件。如果你只需要一个简单的配置,你可以跳过这一步;像
    端口
    这样的东西可以通过环境变量进行设置,其他许多东西可以通过服务器启动命令的
    -c
    标志进行设置

  • 生成要使用的随机端口号

  • 使用Java的
    进程
    管理启动server-run
    postgres-D_datadir
    一个新的服务器实例。您可以使用
    -c
    传递自定义配置值,还可以设置环境变量以控制行为

  • 通过JDBC连接并
    创建数据库
    ,然后运行测试设置

  • 运行您的测试

  • 通过终止您启动的进程来停止服务器

  • 删除datadir

您需要在一个类中使用适当的临时目录处理来执行流程管理,清除不干净的出口(杀死Pg服务器并在异常时删除datadir),等等

如果您找不到可供借用的罐装测试线束代码,我会感到惊讶。我想知道我们是否应该添加一些到PgJDBC并将其捆绑到驱动程序中?如果你发现任何好的东西,或者写任何好的东西,请通过评论这个问题来帮助我,我会考虑把它作为PGJDBC中的一个实用类来考虑。 也就是说,在服务器上已经运行的现有PostgreSQL实例中,在新创建的测试数据库中运行测试更为常见。您只需使用PostgreSQL用户名/密码/主机/端口/数据库配置测试套件(或者让它连接到
postgres
数据库和
CREATE
DROP
数据库)。毕竟,总是需要一些配置:安装或编译PostgreSQL,确保二进制文件位于
路径上,等等


另一种选择是使用AmazonRDS:使用AWSRDAPI启动一个新的PostgreSQL实例并将其用于测试。由于安装时间和最短运行时间的原因,除非您的测试运行很长时间,否则这可能不实用,但这是另一种选择,Heroku的类似服务也是如此。

您无法启动Postgres服务