使用liquibase命令行Main类时如何指定searchPath参数?
问题解决:Liquibase 4.18.0/4.19.0 中
searchPath和hub-mode参数报错的处理 核心原因
你直接调用的liquibase.integration.commandline.Main是Liquibase的遗留CLI入口类,它仅支持旧版参数集,不兼容--hub-mode、--searchPath这类新CLI架构(4.0+引入的标准CLI)的参数。而系统提示的searchPath参数是针对标准CLI的,这就导致了参数不识别的矛盾。
解决方案
方案1:改用标准Liquibase CLI(推荐)
放弃直接调用liquibase.integration.commandline.Main,改用标准的jar包执行方式,这样就能正常支持目标参数:
java -jar liquibase.jar --logLevel=info --defaultsFile=project.properties --hub-mode=off --search-path="some/resources" update
注:标准CLI中--search-path和--searchPath两种写法都支持,可根据习惯选择。
方案2:继续使用遗留入口类(不推荐)
如果因特殊需求必须保留调用liquibase.integration.commandline.Main,需要用以下替代方式实现需求:
- 禁用Hub模式:在
project.properties中添加配置liquibase.hub.mode=off,或者在命令行通过系统属性传递:java -Dliquibase.hub.mode=off liquibase.integration.commandline.Main --logLevel=info --defaultsFile=project.properties update - 指定资源搜索路径:使用旧版参数
--classpath替代,或在project.properties中设置liquibase.searchPath=some/resources,也可以用系统属性传递:java -Dliquibase.searchPath="some/resources" liquibase.integration.commandline.Main --logLevel=info --defaultsFile=project.properties update
内容的提问来源于stack exchange,提问作者Lonzak
相关产品推荐
相关产品推荐

