使用war访问liquibase.properties

时间:2017-08-29 08:08:56

标签: java liquibase

我们假设我有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 中没有看到我的属性文件。我做错了什么?

1 个答案:

答案 0 :(得分:0)

  

我做错了什么?

显然...... liquibase能够从类路径中查找和加载属性。以下是尝试将属性文件作为资源打开的代码:

    try (InputStream resourceAsStream = getClass().getClassLoader()
             .getResourceAsStream(potentialPropertyFile.getAbsolutePath())) {
        if (resourceAsStream != null) {
            parsePropertiesFile(resourceAsStream);
        }

}         }

如果您不提供绝对资源路径,则代码将尝试解析主机文件系统中当前目录上下文中的路径。

(这是来自HEAD Liquibase源代码截至2017-08-29:

我认为这种行为是一个错误....)

解决方法:类路径上属性文件的绝对资源路径的命令行选项。