我们假设我有2个maven模块:数据源,打包为 jar 和门户,打包为 war 并且它取决于数据源。
我在项目中使用Liquibase, liquibase.properties 存储在 datasource 模块资源中。
现在我想使用我的配置文件使用命令行运行liquibase。我正在尝试用命令执行:
java -jar liquibase.jar \
--classpath=portal.war \
--defaultsFile=liquibase.properties
rollback
但我从Liquibase那里得到错误:
Errors:
--url is required
--changeLogFile is required
似乎liquibase在嵌套的 jar 中没有看到我的属性文件。我做错了什么?
答案 0 :(得分:0)
我做错了什么?
显然...... liquibase能够从类路径中查找和加载属性。以下是尝试将属性文件作为资源打开的代码:
try (InputStream resourceAsStream = getClass().getClassLoader()
.getResourceAsStream(potentialPropertyFile.getAbsolutePath())) {
if (resourceAsStream != null) {
parsePropertiesFile(resourceAsStream);
}
} }
如果您不提供绝对资源路径,则代码将尝试解析主机文件系统中当前目录上下文中的路径。
(这是来自HEAD Liquibase源代码截至2017-08-29:
我认为这种行为是一个错误....)
解决方法:类路径上属性文件的绝对资源路径的命令行选项。