关键词:
【中文标题】liquibase-maven-plugin 与 testcontainers 的使用【英文标题】:The usage of liquibase-maven-plugin with testcontainers 【发布时间】:2021-12-01 00:44:29 【问题描述】:假设我有这个插件配置(使用 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 代码,它与单元测试无关。
【问题讨论】:
看看the-codeslinger.com/2020/04/26/… - 它使用Flyway,但你应该能够使用Liquibase和SchemaCrawler @SualehFatehi 谢谢!我已经用 groovy 插件 + testcontainers 实现了它,但同样应该也可以工作docker-maven-plugin
。我会在业余时间尝试这个插件。
【参考方案1】:
你可以通过一个小的groovy-maven-plugin
sn-p来使用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
【讨论】:
谢谢,成功了。另外,testcontainers 的好处是创建的容器会被 ryuk 自动删除,所以在这种情况下你不需要执行额外的操作Liquibase:diff 总是生成索引
...时间】:2018-02-1115:19:03【问题描述】:我使用spring-boot和liquibase-maven-plugin来根据我的类生成数据库更改,但是“mvncompileliquibase:diff”命令总是生成索引和外键的删除和包含,即使数据库已更新并且类没有变化(因此数据库中应该... 查看详情
Liquibase maven插件不起作用
...出现以下错误:无法在项目liquibase上执行目标org.liquibase:liquibase-maven-plugin:3.4.1:update(默认):设置或运行Liq 查看详情
Liquibase 看不到实体的变化
...正在尝试使用liquibase配置简单的maven项目。我有很多关于liquibase-maven-plugin和liquibase-hibernate4版本的问题,它们不会产生大的堆栈跟踪,但最后我几乎让它工作了。但是当我执行mvnliquibase:d 查看详情
找不到数据库驱动程序:org.postgresql.Driver
...目来稍微改变项目。它是一个JavaEE项目。所以我使用的是liquibase-maven-plugin。到目前为止,我的pom.xml中有:<plugin& 查看详情
三.工具与市场-债券与债务股票与公司
LDAP 与 MYSQL .. JA-SIG CAS 与 LDAP 与 CAS 与 MySQL
】LDAP与MYSQL..JA-SIGCAS与LDAP与CAS与MySQL【英文标题】:LDAPvsMYSQL..JA-SIGCASwithLDAPvsCASwithMySQL【发布时间】:2012-12-0518:12:59【问题描述】:LDAP与MYSQL..JA-SIGCAS与LDAP与CAS与MySQL。现在我们在LDAP中有用户ID、密码和角色,并且正在使用CAS和Spr... 查看详情
LocalAlloc 与 GlobalAlloc 与 malloc 与 new
】LocalAlloc与GlobalAlloc与malloc与new【英文标题】:LocalAllocVsGlobalAllocVsmallocVsnew【发布时间】:2016-03-2311:07:46【问题描述】:我已经在各种链接上搜索过这个,但仍然存在疑问。我不明白LocalAllocvsGlobalAllocvsmallocvsnew内存分配的区别。... 查看详情
与 0 进行比较与与某个值进行比较是不是更快?
】与0进行比较与与某个值进行比较是不是更快?【英文标题】:Isitquickertocompareagainst0vscompareagainstavalue?与0进行比较与与某个值进行比较是否更快?【发布时间】:2019-07-1216:46:58【问题描述】:其中一个循环是否比另一个更快?... 查看详情
调整大小与 CenterCrop 与 RandomResizedCrop 与 RandomCrop
】调整大小与CenterCrop与RandomResizedCrop与RandomCrop【英文标题】:ResizeVsCenterCropVsRandomResizedCropVsRandomCrop【发布时间】:2020-08-0301:47:51【问题描述】:谁能告诉我上述函数在哪些情况下使用以及它们如何影响图像大小?我想调整CatVDog... 查看详情
=与==&与&&|与||的区别
=与===属于赋值运算符,将右侧的值赋给左侧的变量名称==属于关系运算符,判断左右两边值是否相等,结果为boolean类型&与&&&是逻辑与,&&是短路与,都属于逻辑运算符,都表示并且,执行结果都相同当使用短... 查看详情
restfulrest与restful理解与实践(代码片段)
REST与RESTful介绍与理解文章目录REST与RESTful介绍与理解一.REST与RESTful简介二.REST架构原则三.传统API与RESTfulAPI对比四.RESTfulAPI实践相关文献一.REST与RESTful简介REST全称表述性状态转移(RepresentationalStateTransfer)。是RoyFielding博... 查看详情
reduceByKey 与 groupByKey 与 aggregateByKey 与 combineByKey 之间的火花差异
】reduceByKey与groupByKey与aggregateByKey与combineByKey之间的火花差异【英文标题】:SparkdifferencebetweenreduceByKeyvs.groupByKeyvs.aggregateByKeyvs.combineByKey【发布时间】:2017-09-0722:23:31【问题描述】:谁能解释reducebykey、groupbykey、aggregatebykey和com 查看详情
jquery与javascript与ajax三者的区别与联系
...Ajax是一门技术,它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新。3、jQuery是一个框架,它对JS进行了封装,使其更方便使用。jQuery使得JS与Ajax的使用更方便 关系比喻:若... 查看详情
c++map与set的介绍与使用(代码片段)
等风来,不如追风去。map与setset与multisetset与multiset的介绍set与multiset的定义方式set与multiset常用操作迭代器map与multimapmap与multimap的介绍set与multisetset与multiset的介绍set是STL中一种标准关联容器。它底层使用平衡的搜索树——红... 查看详情
css盒模型与bfc与布局与垂直水平居中与css设计模式等
一、css盒子与布局相关盒子内部的布局盒子之间的布局visualformatting脱离正常流normalflow的盒子的布局absolute布局上下文下的布局float布局上下文下的布局flow下的盒子的布局BFC布局上下文下的布局IFC布局上下文下的布局FFC布局上下... 查看详情
为何与0xff进行与运算
为何与0xff进行与运算为何与0xff进行与运算在剖析该问题前请看如下代码publicstaticStringbytes2HexString(byte[]b) Stringret=""; for(inti=0;i<b.length;i++) Stringhex=Integer.toHexString(b[i]&0xFF); &n 查看详情
同步与异步,阻塞与非阻塞
...请联系作者获得授权,非商业转载请注明出处。“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制(synchronouscommunication/asy 查看详情
同步与异步阻塞与非阻塞
“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制(synchronouscommunication/asynchronouscommunication)所谓同步,就是在发出一个*调用*时,在... 查看详情