Liquibase 找不到更改日志文件

Liquibase won't find changelog files

我正在尝试以编程方式调用 liquibase。

为此,我使用以下代码:

val database = DatabaseFactory.getInstance()
    .findCorrectDatabaseImplementation(JdbcConnection(connection))

Liquibase(pathToChangelog, ClassLoaderResourceAccessor(), database)
    .update(Contexts(), LabelExpression())

Liquibase 成功连接到数据库并获取锁,但在解析 pathToChangelog 时失败并出现 path/to/changelog does not exist 错误。

这是我的 WAR 文件结构:

WEB-INF
  \  changelog
       \ db.changelog-master.xml

我试过了

"WEB-INF/changelog/db.changelog-master.xml"
"/WEB-INF/changelog/db.changelog-master.xml"
"changelog/db.changelog-master.xml"
System.getProperty("user.dir") + "/WEB-INF/changelog/db.changelog-master.xml"

当然还有其他一些东西,但无济于事。一直提示文件不存在

我是不是做错了什么?

通过查看源代码找到了答案。这些文件必须放在 WEB-INF/classes 目录中,前提是路径必须是从那里开始的相对路径。

例如,如果您将主文件放在这里:

WEB-INF/classes/changelog/db.changelog-master.xml

pathToChangelog 参数应该只是 changelog/db.changelog-master.xml.

事实上,这似乎是 maven-war-plugin 复制资源的默认目标位置。