Here we go..
We have a Spring Boot 1.4.0 application, and we use Liquibase 3.5.1 for our database management.
All our individual change files are located in /src/main/resources/db/changelog , and they have the following naming scheme: [semanticVersion]-[descriptor].yml
The master change log, however, is inside runtime dependencies.
db.changelog-master.yaml databaseChangeLog: - changeSet: id: 1.0.1 author: atlassian changes: - createTable: //code omitted for brevity - includeAll: path: classpath*:db/changelog errorIfMissingOrEmpty: false
Now to the problem.
Launching the application through IDEA is downloaded and applied to our database.
However, when I use the Spring Boot Gradle plugin to build a fat jar ( bootRepackage task), and then start it using java -jar [project].jar , the main change log will be found, a table is created, but all the other files, by apparently ignored. The databasechangelog table only displays update 1.0.1 and this. Satisfactory fact, if I set the error property to true , it will fail only after I also confuse path with something unsolvable. Thus, it looks like the directory was found just fine.
NB! All .yml files are inside the fat can, checked and double checked :)
I also tried renaming them to .yaml , I tried replacing them with the corresponding .xml files, nothing is allowed.
I dug on Google, Stack and Liquibase JIRA and found only a few mentions of this and from what I read on 3.5.1 this problem should have been fixed .. but without the dice.
If I switch the Liquibase dependency to 3.4.2 (which was mentioned as a possible solution) and run jar, I get several thousand lines of exceptions that end with Exception that db.changelog-master.yaml not recognized as the correct file and the databasechangelog node cannot to be found.
If I missed any important information, just let me know, I tried to be as detailed as possible.
spring spring-boot liquibase
rorschach
source share