Java liquibase 3.5.X罐头盒';找不到具有相对路径的includeAll的任何文件

Java liquibase 3.5.X罐头盒';找不到具有相对路径的includeAll的任何文件,java,database,liquibase,Java,Database,Liquibase,我们正在使用liquibase 3.4.2并希望更新到3.5.3,但我的所有尝试都失败了,因为liquibase找不到使用includeal包含的任何文件。我已经测试了liquibase 3.5.0、3.5.1和3.5.3(我跳过了3.5.2,因为) 我的变更集如下所示: <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.li

我们正在使用liquibase 3.4.2并希望更新到3.5.3,但我的所有尝试都失败了,因为liquibase找不到使用
includeal
包含的任何文件。我已经测试了liquibase 3.5.0、3.5.1和3.5.3(我跳过了3.5.2,因为)

我的变更集如下所示:

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
               xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

    <includeAll path="relative/dir1" relativeToChangelogFile="true" errorIfMissingOrEmpty="true"/>
    <includeAll path="relative/dir2" relativeToChangelogFile="true" errorIfMissingOrEmpty="true"/>

</databaseChangeLog>
在我的例子中,
entry.getName()
在第一个循环中返回
some
,然后
some/dir
依此类推,直到
some/dir/relative/dir1/other-changeset-1.xml
some/dir/relative/dir2/other-changeset-2.xml
。但条件总是错误的,因为
path
包含类似
jar:file:/C:/path/to/maven/project/war/target/example.war-1.0-SNAPSHOT/WEB-INF/lib/changesets-1.0-SNAPSHOT.jar的内容/relative/dir1/
jar:file:/C:/path/to/maven/project/war/target/example.war-1.0-SNAPSHOT/WEB-INF/lib/changesets-1.0-SNAPSHOT.jar/相对/dir2/

这真的是3.5.0以来liquibase中的一个bug吗?如果我降级到liquibase 3.4.2,它将非常有效。如果我使用
include
而不是
includeAll
也可以,但是在我的实际应用程序中,我有更多的变更集,我不想手动列出它们

我找到了一些关于这方面的信息,但没有一个对我有帮助。为了完整起见:

  • 利基巴斯·吉拉:
  • 所以:
    • 试试这个


      以file:/开始路径,并使用绝对路径。这并不理想,但我能够让liquibase maven插件3.6.3加载变更集。

      我也面临同样的问题。它不适用于Maven build。我不断收到由以下原因引起的异常:liquibase.exception.SetupException:找不到includeal'dml/services/'的目录或目录为空。我还遇到了类似CORE-2851和相关的问题。我提交了一份公关,解决了我的问题:谢谢你的回答,但我不再从事使用liquibase的项目。所以我无法验证你的答案。我可以验证答案,我花了几个小时,没有一个作品的例子,非常模糊,这对我来说只是沙漠上的水,请给这个人正确的答案。尽管在Liqbase 3.10.0中进行了测试,但它并不能解决从使用
      Java-jar…
      启动的Java应用程序运行Liquibase的问题。
      if (entry.getName().startsWith(path)) {