java - Mongock Standalone 不执行变更日志
问题描述
我的项目中有以下配置,但由于某种原因,从未执行过更改日志。
关于我所缺少的任何想法?
我可以成功使用 mongo 客户端并执行 CRUD 操作,只是 MongockStandalone 不起作用。
pom.xml
<dependency>
<groupId>com.github.cloudyrock.mongock</groupId>
<artifactId>mongock-standalone</artifactId>
<version>4.1.14</version>
</dependency>
<dependency>
<groupId>com.github.cloudyrock.mongock</groupId>
<artifactId>mongodb-v3-driver</artifactId>
<version>4.1.14</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.11.0</version>
</dependency>
主类中的驱动代码:
MongockStandalone.builder()
.setDriver(MongoCore3Driver.withDefaultLock(mongoClient, "demo"))
.addChangeLogsScanPackage("co.my.test.persistence.changelog")
.buildRunner();
变更日志类:
package co.my.test.persistence.changelog;
//imports
@ChangeLog(order = "001")
public class Changelog001 {
@ChangeSet(order = "001", id = "test", author = "Igor Flakiewicz")
public void test() {
// this method is never executed, the sout doesn't occur and breakpoints are not reached
System.out.println("PLEASE WORK!");
// migration code
}
}
解决方案
可能您正在关注Mongock 文档中的快速入门。多亏了这张票,我们在文档中发现了一个错误。使用以下代码构建运行器后:
MongockStandalone.builder()
.setDriver(MongoCore3Driver.withDefaultLock(mongoClient, "demo"))
.addChangeLogsScanPackage("co.my.test.persistence.changelog")
.buildRunner();
您需要执行该方法execute()
因此,您应该使用的正确代码类似于:
MongockStandalone.builder()
.setDriver(MongoCore3Driver.withDefaultLock(mongoClient, "demo"))
.addChangeLogsScanPackage("co.my.test.persistence.changelog")
.buildRunner()
.execute();
推荐阅读
- django - 将 DateTimeField 与今天的日期进行比较的 Django 过滤器不起作用
- javascript - 如何检查数组的值并根据条件删除一些属性?
- c# - 可访问性不一致:参数类型“ICourseRepository”比方法 ASP.NET Core MVC 更难访问
- git - 我怎样才能让 .gitignore exclude 工作以忽略 /AppData 中的所有内容,但仍然索引我的 /AppData/Roaming/doublecmd/doublecmd.xml?
- python - 如何根据数据框中的行值和列值删除行?
- javascript - 加载属性延迟加载不适用于本地图像
- ansible - 在ansible中调用该角色时如何执行具有匹配标签的任务?
- c - 什么是分段错误
- reactjs - 在 onAuthStateChanged 侦听器中分离 Firestore 侦听器
- authentication - Azure B2C 授权(非身份验证)