Frage liquibase 3.5.X kann keine Dateien für includeAll mit dem relativen Pfad finden


Wir verwenden liquibase 3.4.2 und möchten auf 3.5.3 updaten, aber alle meine Versuche sind fehlgeschlagen, da liquibase keine Datei findet, die von usind enthalten ist includeAll. Ich habe liquibase 3.5.0, 3.5.1 und 3.5.3 getestet (ich habe 3,5.2 übersprungen wegen dieser Blogbeitrag).

Mein ChangeSet sieht so aus:

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

Meine Verzeichnisstruktur (in einem Jar, das in einem Krieg enthalten ist) sieht folgendermaßen aus:

  • /some/dir/changeset.xml  (der Code oben)
  • /some/dir/relative/dir1/another-changeset.xml
  • /some/dir/relative/dir2/another-changeset-1.xml
  • /some/dir/relative/dir2/another-changeset-2.xml

Ich habe bereits durch liquibase debugged und blieb stecken ClassLoaderResourceAccessor.java:108:

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

In meinem Fall entry.getName() kehrt zurück some in der ersten Schleife dann some/dir und so weiter bis some/dir/relative/dir1/another-changeset-1.xml, some/dir/relative/dir2/another-changeset-1.xml und some/dir/relative/dir2/another-changeset-2.xml. Aber die Bedingung ist immer falsch, weil path enthält etwas wie jar:file:/C:/path/to/maven/project/war/target/example.war-1.0-SNAPSHOT/WEB-INF/lib/changesets-1.0-SNAPSHOT.jar!/relative/dir1/ oder jar:file:/C:/path/to/maven/project/war/target/example.war-1.0-SNAPSHOT/WEB-INF/lib/changesets-1.0-SNAPSHOT.jar!/relative/dir2/

Ist das wirklich ein Fehler in liquibase seit 3.5.0? Es funktioniert perfekt, wenn ich auf liquibase 3.4.2 herabstufen. Es funktioniert auch, wenn ich benutze include Anstatt von includeAll Aber in meiner realen Anwendung habe ich viel mehr Changesets und möchte sie nicht alle manuell auflisten.

Ich habe einige Informationen dazu gefunden, aber keine davon hilft mir. Der Vollständigkeit halber:


8
2018-01-16 14:26


Ursprung


Antworten: