当前位置: 首页 > 知识库问答 >
问题:

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

桑璞
2023-03-14
<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>
  • /some/dir/changeset.xml(上面的代码)
  • /some/dir/relative/dir1/other-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.xmlsome/dir/another-changeset-1.xmlsome/dir/relative/dir2/another-changeset-2.xml。但是条件总是为false,因为path包含jar:file://c://path/to/maven/project/war/target/example.war-1.0-snapshot.jar!/relative/target/example.jar!/relative/dir2/jar:file://c://path/to/maven/project/web-inf/lib/changeshot.jar!/relative/dir2/

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

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

  • LiquiBase-JIRA:https://liquiBase.jira.com/browse/core-2851,https://liquiBase.jira.com/browse/core-2863,https://liquiBase.jira.com/browse/core-2898,https://liquiBase.jira.com/browse/core-2974
  • 所以:忽略Liquibase includeAll标记,includeAll path=“”在3.5.3中不工作,使用java-jar方法

共有1个答案

谷德本
2023-03-14

试试这个,

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

 类似资料:
  • 问题内容: 这似乎是一个直接的问题。但我无法破解。在helper1.js中,我想访问foobar.json(来自) 我无法使它正常工作fs:如何找到父文件夹? 这里的任何帮助将是巨大的。 问题答案: 您可以使用该模块将所在目录的路径连接到的相对路径。这将为您提供前往的绝对路径。 假设采用UTF8编码,则此方法应可在Linux,OSX和Windows上使用。

  • 问题内容: 我有一个包含2个软件包的项目: tkorg.idrs.core.searchengines tkorg.idrs.core.searchengines 在包(2)中,我有一个文本文件;在包(1)中,我有一个类。这是代码: 但是有这个错误: 你能给出解决方案吗?谢谢。 问题答案: 如果它已经在类路径中,则只需从类路径而不是磁盘文件系统中获取它即可。不要在中摆弄相对路径。它们取决于当前的工

  • 我试图在服务器上的web应用程序中读取一个本地文件。在JBoss部署之外测试时,文件路径是正确的。然而,当我将它部署到JBoss时,文件路径改变了JBoss的< code>bin目录。当< code>user.dir系统属性被部署为war时,它会发生变化。 我如何在不使用绝对文件路径的情况下防止这种情况? 我想避免绝对文件路径,因为项目需要在具有不同目录结构的多台机器上复制。

  • 在彻底搜索了这些论坛寻找答案后,我找不到一个类似于我的案例。 在使用maven生成WAR filer并部署我的服务器之后,每次我向需要创建DAO的API发送GET请求时,我都会在服务器控制台收到以下警告: 在类路径中找不到任何meta-inf/persistence.xml文件 和以下例外情况: 没有名为mim_ajuda的EntityManager的持久性提供程序 在进一步讨论之前,我已经搜索了

  • 我知道关于这个问题还有其他问题,但没有一个解决方案对我有效。我正在使用maven在eclipse中构建一个java项目,我有我的持久性。src/main/resource/META_INF文件夹中的xml文件。但当我尝试安装mvn时,总是会出现以下错误: 从控制台输出来看,这似乎是由以下原因造成的: 这是我的persistence.xml文件: 我试着右键点击项目,并将META_INF文件夹添加到

  • 我有以下代码 不幸的是,这并不奏效。有没有设置相对路径的方法?我该怎么做?