Java liquibase 3.5.X罐头盒';找不到具有相对路径的includeAll的任何文件
我们正在使用liquibase 3.4.2并希望更新到3.5.3,但我的所有尝试都失败了,因为liquibase找不到使用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
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)) {