You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Liquibase Gradle Plugin至2.2.0遇--log-level未知选项错误求助

Liquibase Gradle插件2.2.0升级后--log-level选项报错问题排查

问题核心

Liquibase Core 4.23.1官方文档明确支持--log-level(短横线分隔)格式参数,但升级至Liquibase Gradle插件2.2.0后,插件生成的命令中虽包含--log-level=info,却触发错误:

Unexpected error running Liquibase: Unknown option: 'log-level'
For more information, please use the --logLevel flag

问题原因

这是Liquibase Gradle插件2.2.0的兼容性bug:

  • 插件2.2.0版本的参数映射逻辑发生变化,错误地将Liquibase Core支持的--log-level参数处理成了不符合当前Core版本预期的传递形式,导致Core无法识别该参数。
  • 插件生成的冗余参数--output-file=NotNeeded可能干扰了参数解析逻辑,进一步触发参数识别异常。

解决方案

1. 显式指定驼峰格式参数

在Gradle配置中直接使用驼峰格式的logLevel参数,覆盖插件默认生成的--log-level:

liquibase {
    activities {
        main {
            logLevel = "info"
            changeLogFile = "src/main/resources/liquibase/changeLog-master.xml"
            // 其他配置项...
        }
    }
}

2. 临时降级插件

若无需插件2.2.0的新特性,可暂时回退至2.1.1版本,保持原有稳定运行逻辑:

plugins {
    id "org.liquibase.gradle" version "2.1.1"
}

3. 手动修正任务参数

通过Gradle任务配置,替换插件生成的错误参数格式:

tasks.named("liquibaseMain") {
    doFirst {
        def argsList = args.toList()
        def logLevelArgIndex = argsList.findIndexOf { it.startsWith("--log-level=") }
        if (logLevelArgIndex != -1) {
            def logValue = argsList[logLevelArgIndex].split("=")[1]
            argsList[logLevelArgIndex] = "--logLevel=${logValue}"
            args = argsList
        }
        // 可选:移除冗余的--output-file参数
        args = args.findAll { !it.startsWith("--output-file=") }
    }
}

补充说明

Liquibase Core部分版本同时兼容--log-level和--logLevel两种参数格式,但插件2.2.0的参数生成逻辑打破了这种兼容。优先通过显式配置驼峰格式参数解决问题,若仍有异常,可尝试移除冗余的--output-file参数。

内容的提问来源于stack exchange,提问作者FrankS77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:18:19