升级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
相关产品推荐
相关产品推荐

