liquibase / liquibase-gradle-plugin

A Gradle plugin for Liquibase
Other
197 stars 57 forks source link

Unusual behaviour with different changeLogFile path #32

Closed regrog closed 6 years ago

regrog commented 6 years ago

I'm configuring liquibase with gradle and I have some problems. My changelog files are in json (not a problem). eclipse oxygen java 8 liquibase-core 3.5.3 (forced)

when I execute ./gradlew dropAll update in command line, the error output is different with different changeLogFile path:

case 1:

changeLogFile 'src/main/db/changelog/my.changelog-master.json'

case 2:

changeLogFile 'my.changelog-master.json'

Here an example project to test projectB.zip

Try to execute the command changing changeLogFile property .

executing the same commands within eclipse, the behaviuor is like case 2

stevesaliman commented 6 years ago

I'm not entirely sure why case 1 is having an issue, but I can tell you why there is a difference in the output, and why case 2 fails the way it does.

In case 2, you tell Liquibase the name of the changelog file, but not where to find it, so Liquibase fails because it can't find the master file.

In case 1, Liquibase finds the master changelog just fine, but runs into problems processing the includeAll change inside it. For some reason, Liquibase has trouble when relativeToChangelogFile is set to true. I'm still trying to figure out why, but I can say that the includeAll change is processed by Liquibase itself, and not the Liquibase plugin, so this is probably a bug in Liquibase itself.

What does work is changing the path of the includeAll to src/main/db/changelog/res and relativeToChangelogFile to false.

stevesaliman commented 6 years ago

Turns out you're running into the same problem as Issue #29

It will require a fix in Liquibase itself, though you can use the workaround I mentioned earlier to get around he problem until it gets fixed.

regrog commented 6 years ago

yes, it seems a liquibase problem. Using a jar created from master branch it works.