如何在Bash中正确配置Liquibase的searchPath选项?
解决Liquibase社区版在Bash中指定搜索路径的问题
你的核心问题是Liquibase社区版不支持商业版的--searchPath/--search-path参数和LIQUIBASE_SEARCH_PATH环境变量,得用社区版兼容的方式指定资源路径:
先切换到项目根目录(
$PROJECT_ROOT),确保路径引用准确:cd $PROJECT_ROOT使用
--classpath(或缩写-cp)参数指定资源根目录,也就是你的persistence/src/main/resources/,这样Liquibase就能识别classpath:/changelog/开头的路径:liquibase update \ --changelog-file=changelog/db.changelog-dev.xml \ --classpath=persistence/src/main/resources/ \ --url="jdbc:postgresql://localhost:5432/sigma"如果不想切换目录,也可以用绝对路径指定classpath:
liquibase update \ --changelog-file=changelog/db.changelog-dev.xml \ --classpath=/full/path/to/your/project/persistence/src/main/resources/ \ --url="jdbc:postgresql://localhost:5432/sigma"
原理说明:Liquibase社区版通过classpath来定位资源文件,把你的资源根目录加入classpath后,db.changelog-dev.xml里引用的classpath:/changelog/db.changelog-master.xml就能被正确找到,关联的SQL脚本也会自动从该目录下查找。
内容的提问来源于stack exchange,提问作者ikaerom
相关产品推荐
相关产品推荐

