gpt4 book ai didi

java - liquibase 3.5.X 找不到具有相对路径的 includeAll 的任何文件

转载 作者:搜寻专家 更新时间:2023-10-30 21:35:10 25 4
gpt4 key购买 nike

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

我的 ChangeSet 看起来像这样:

<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>

我的目录结构(在 war 中包含的 jar 中)如下所示:

  • /some/dir/changeset.xml (上面的代码)
  • /some/dir/relative/dir1/another-changeset.xml
  • /some/dir/relative/dir2/another-changeset-1.xml
  • /some/dir/relative/dir2/another-changeset-2.xml

我已经通过 liquibase 调试并卡在了 ClassLoaderResourceAccessor.java:108 :

if (entry.getName().startsWith(path)) {

在我的例子中,entry.getName() 在第一个循环中返回 some,然后是 some/dir 等等,直到 some/dir/relative/dir1/another-changeset-1.xml, some/dir/relative/dir2/another-changeset-1.xmlsome/dir/相对/dir2/another-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!/relative/dir2/

这真的是 liquibase 3.5.0 以来的错误吗?如果我降级到 liquibase 3.4.2,它会完美运行。如果我使用 include 而不是 includeAll 它也可以工作,但在我的实际应用程序中我有更多的变更集,我不想手动列出它们。

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

最佳答案

试试这个,

<includeAll
path="file:/absolute/path/to/changeset/folder"
relativeToChangelogFile="false" />

路径以 file:/开始,并使用绝对路径。这并不理想,但我能够获得 liquibase-maven-plugin 3.6.3 来加载变更集。

关于java - liquibase 3.5.X 找不到具有相对路径的 includeAll 的任何文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com