liquibase-maven-plugin 与 testcontainers 的使用
The usage of liquibase-maven-plugin with testcontainers
假设我有这个插件配置(使用 hsqldb):
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<id>build</id>
<phase>generate-test-resources</phase>
<goals>
<goal>update</goal>
</goals>
<configuration>
<changeLogFile>${basedir}/src/main/resources/liquibase/db.changelog-master.xml
</changeLogFile>
<driver>org.hsqldb.jdbc.JDBCDriver</driver>
<url>jdbc:hsqldb:file:${project.build.directory}/hsqldb/sample;shutdown=true</url>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
<logging>off</logging>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.5.2</version>
</dependency>
</dependencies>
</plugin>
我想将 hsqldb 更改为 postgres。我想这里可以使用 testcontainers
。但是我无法正确设置它。
如果可能的话,谁能帮忙做一下示例配置?或者也许还有其他解决方案?
注意:我目前在另一个插件 (schemacrawler
) 中使用这个数据库,所以没有使用 java 代码,它与单元测试无关。
您可以通过一小段 groovy-maven-plugin
使用 Testcontainers,例如,以下将启动 Postgres 容器:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<!-- Start the container in any phase before the actual code
generation is required, i.e. at the latest in
generate-sources -->
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
db = new org.testcontainers.containers.PostgreSQLContainer(
"postgres:latest")
.withUsername("${db.username}")
.withDatabaseName("postgres")
.withPassword("${db.password}");
db.start();
// After you've started the container, collect its generated
// JDBC URL (which contains a random port)
project.properties.setProperty('db.url', db.getJdbcUrl());
</source>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
</dependency>
</dependencies>
</plugin>
此示例缺少正常关机。它也取自 jOOQ 文章,关于如何使用 Testcontainers 从数据库模式生成 Java 类:https://blog.jooq.org/using-testcontainers-to-generate-jooq-code
假设我有这个插件配置(使用 hsqldb):
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<executions>
<execution>
<id>build</id>
<phase>generate-test-resources</phase>
<goals>
<goal>update</goal>
</goals>
<configuration>
<changeLogFile>${basedir}/src/main/resources/liquibase/db.changelog-master.xml
</changeLogFile>
<driver>org.hsqldb.jdbc.JDBCDriver</driver>
<url>jdbc:hsqldb:file:${project.build.directory}/hsqldb/sample;shutdown=true</url>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
<logging>off</logging>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.5.2</version>
</dependency>
</dependencies>
</plugin>
我想将 hsqldb 更改为 postgres。我想这里可以使用 testcontainers
。但是我无法正确设置它。
如果可能的话,谁能帮忙做一下示例配置?或者也许还有其他解决方案?
注意:我目前在另一个插件 (schemacrawler
) 中使用这个数据库,所以没有使用 java 代码,它与单元测试无关。
您可以通过一小段 groovy-maven-plugin
使用 Testcontainers,例如,以下将启动 Postgres 容器:
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>groovy-maven-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<!-- Start the container in any phase before the actual code
generation is required, i.e. at the latest in
generate-sources -->
<phase>generate-sources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<source>
db = new org.testcontainers.containers.PostgreSQLContainer(
"postgres:latest")
.withUsername("${db.username}")
.withDatabaseName("postgres")
.withPassword("${db.password}");
db.start();
// After you've started the container, collect its generated
// JDBC URL (which contains a random port)
project.properties.setProperty('db.url', db.getJdbcUrl());
</source>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
</dependency>
</dependencies>
</plugin>
此示例缺少正常关机。它也取自 jOOQ 文章,关于如何使用 Testcontainers 从数据库模式生成 Java 类:https://blog.jooq.org/using-testcontainers-to-generate-jooq-code