We are using liquibase 3.4.2 and want to upgrade it to 3.5.3, but all my attempts were unsuccessful since liquibase does not find any files included with includeAll . I tested liquibase 3.5.0, 3.5.1 and 3.5.3 (I missed 3.5.2 because of this blog post ).
My set of changes looks like this:
<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>
My directory structure (inside the jar, which is included in the war) looks like this:
/some/dir/changeset.xml (code above)/some/dir/relative/dir1/another-changeset.xml/some/dir/relative/dir2/another-changeset-1.xml/some/dir/relative/dir2/another-changeset-2.xml
I already debugged through liquibase and stuck in ClassLoaderResourceAccessor.java:108 :
if (entry.getName().startsWith(path)) {
In my case, entry.getName() returns some in the first loop, then some/dir and so on to some/dir/relative/dir1/another-changeset-1.xml , some/dir/relative/dir2/another-changeset-1.xml and some/dir/relative/dir2/another-changeset-2.xml some/dir/relative/dir2/another-changeset-1.xml some/dir/relative/dir2/another-changeset-2.xml . But the condition is always false, because path contains something like jar:file: /C: /path/to/maven/project/war/target/example.war-1.0-SNAPSHOT/WEB-INF/lib/changesets-1.0-SNAPSHOT.jar!/relative/dir1/ or jar:file: /C: /path/to/maven/project/war/target/example.war-1.0-SNAPSHOT/WEB-INF/lib/changesets-1.0-SNAPSHOT.jar!/relative/dir2/
Is this really a bug in liquibase since 3.5.0? This works fine if I downgrade to version 2.2.2. This also works if I use include instead of includeAll but in my real application I have a lot more change sets and I donβt want to list them all manually.
I found some information on this, but none of them help me. To complete the picture:
java database liquibase
Josef Reichardt
source share