gradle 和 Java13 内的 运行 时 Liquibase XmlElement 错误异常

Liquibase XmlElement error exception when running within gradle and Java13

问题

我最近开始在 Spring Boot (2.2.1) 中使用 liquibase。构建工具是 gradleJDK 版本是 13。根据 github.

上的自述文件页面,我已经集成了 liquibase 插件

我在启动更新(gradle 更新)等 liquibase 任务时遇到了奇怪的行为。我收到 XmlElement 属性 Java NoClassDefFoundException (抱歉,因为我丢失了确切的异常堆栈跟踪和消息),但我解决了这个问题,并想在这里分享我的解决方案。

解决方案

当您从 Java 8 移动到 Java 9 及更高版本时,这是众所周知的问题,它通过添加对 javax.xml.bind 的依赖来解决。但是,当您处理 liquibase gradle 插件时,将编译 'javax.xml.bind:jaxb-api' 或运行时 'javax.xml.bind:jaxb-api' 添加到依赖项部分并没有帮助。我通过添加 liquibaseRuntime 'javax.xml.bind:jaxb-api' 解决了这个问题,这是我的 gradle 脚本的一部分:

dependencies {
   // my project dependencies
   // ...

   // liquibase plugin deps
   liquibaseRuntime 'org.liquibase:liquibase-core:3.8.1'
    liquibaseRuntime "jakarta.xml.bind:jakarta.xml.bind-api:2.3.2"
    liquibaseRuntime 'org.springframework.boot:spring-boot:2.2.1.RELEASE'
    //liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.0.1'
    liquibaseRuntime 'org.postgresql:postgresql:9.4.1211.jre7'
    liquibaseRuntime 'ch.qos.logback:logback-core:1.2.3'
    liquibaseRuntime 'ch.qos.logback:logback-classic:1.2.3'
    liquibaseRuntime sourceSets.main.output 
}

希望我的解决方案可以帮助您节省时间。