java - Liquibase 更改日志不存在 - ChangeLogParseException
问题描述
我正在尝试在我的 JEE+WildFly 应用程序中启动时使用 liquibase。启动 AS 时,liquibase 抛出 ChangeLogParseException:
09:41:40,602 ERROR [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0021: Deploy of deployment "bets.war" was rolled back with the following failure message:
{
"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./bets" => "java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.ChangeLogParseException: :classpath/WEB-INF/db-changelog.xml does not exist
Caused by: java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.ChangeLogParseException: :classpath/WEB-INF/db-changelog.xml does not exist
Caused by: java.lang.RuntimeException: liquibase.exception.ChangeLogParseException: :classpath/WEB-INF/db-changelog.xml does not exist
Caused by: liquibase.exception.ChangeLogParseException: :classpath/WEB-INF/db-changelog.xml does not exist"},
Liquibase 参数在 web.xml 中设置:
<!-- liquibase auto startup -->
<context-param>
<param-name>liquibase.changelog</param-name>
<param-value>:classpath/WEB-INF/db-changelog.xml</param-value>
</context-param>
<context-param>
<param-name>liquibase.datasource</param-name>
<param-value>java:jboss/datasources/BetsDS</param-value>
</context-param>
<context-param>
<param-name>liquibase.onerror.fail</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>liquibase.contexts</param-name>
<param-value>production</param-value>
</context-param>
<listener>
<listener-class>liquibase.integration.servlet.LiquibaseServletListener</listener-class>
</listener>
结构如下:
通过 SO 中的主题查看,db-changelog 位于 .war 包中:
已经尝试将 liquibase.changelog 值重命名为 WEB-INF/db-changelog.xml 和 /WEB-INF/db-changelog.xml,还是一样。
解决方案
已经想通了。将 db-changelog 移至 main/resources/META-INF 并将参数设置为
<param-value>META-INF/db-changelog.xml</param-value>
现在一切正常:
[2018-05-27 11:27:42,823] Artifact bets:war: Artifact is deployed successfully
[2018-05-27 11:27:42,823] Artifact bets:war: Deploy took 13 582 milliseconds
推荐阅读
- javascript - 使用 multer 将文件发布到 Digital Ocean Space
- r - GPX 文件中的点之间的距离变得太大
- python-3.x - Python - pdf 到 txt 只返回 (CID:number)
- c# - 从 C# 脚本运行 Python 应用程序并与之交互
- javascript - Webpack - 多次包含文件
- c# - 如何在 Entity Framework Core 中设置数据库初始化程序
- bash - 启动交互式 Docker 会话时的源 bash 配置文件
- reactjs - 使用 Lazy + Suspense 反应预加载组件
- github - 如何在 Github 的配置文件中隐藏 IP 地址和凭据?
- angular - 使用 observable 实现 rxjs 超时