我正在尝试以编程方式调用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"当然还有其他一些东西,但都无济于事。它一直告诉我这个文件不存在。
我做错了什么吗?
发布于 2020-11-27 23:14:51
通过查看源代码找到了答案。文件必须放在WEB-INF/classes目录中,路径必须是从那里开始的相对路径。
例如,如果你把你的主文件放在这里:
WEB-INF/classes/changelog/db.changelog-master.xmlpathToChangelog参数应该简单地为changelog/db.changelog-master.xml。
实际上,这似乎是maven-war-plugin复制的资源的默认目标位置。
https://stackoverflow.com/questions/65002003
复制相似问题