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
复制资源的默认目标位置。
我正在尝试以编程方式调用 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
复制资源的默认目标位置。