Liquibase and Spring Boot

I think it’s great that Spring Boot has built-in support for Liquibase but I think there is missing documentation on it. Some of it is on Spring’s part and others are in Liquibase. I hope to demystify it a bit.

Spring Boot’s default master change log is db/changelog/db.changelog-master.yaml . Note the file extension is yaml not the standard yml. No idea why they did it that way.

For database migrations, I don’t like storing everything in one changelog file. Instead I like putting them in different files in a folder. Liquibase has an includeall directive but only documents it in XML. Not sure how I figured this out but here is how I did it with yaml:

databaseChangeLog:
   - includeAll:
       path: classpath*:db/changelog/changes/

So now I can store my changes in classpath*:db/changelog/changes/ with any format that I want.

Lastly you can use Spring Intializr to put Liquibase in your project but, oddly, it doesn’t include the Liquibase plugin if you pick Maven or Gradle, which means that you don’t have Liquibase commands in your build file. So be aware that, regardless of your build tool, you will have to do more work to get things as workable as it should be.

About the Author

Mike Hostetler profile.

Mike Hostetler

Principal Technologist

Mike has almost 20 years of experience in technology. He started in networking and Unix administration, and grew into technical support and QA testing. But he has always done some development on the side and decided a few years ago to pursue it full-time. His history of working with users gives Mike a unique perspective on writing software.

One thought on “Liquibase and Spring Boot

  1. Gustavo says:

    classpath*:db/changelog/changes/ exactly what I was looking for. Thank you!

  2. Brendan says:

    I had trouble using `classpath:` in my configuration because the liquibase-maven-plugin starts by searching the classpath.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blog Posts
Using Conftest to Validate Configuration Files
Conftest is a utility within the Open Policy Agent ecosystem that helps simplify writing validation tests against configuration files. In a previous blog post, I wrote about using the Open Policy Agent utility directly to […]
SwiftGen with Image & Color Asset Catalogs
You might remember back in 2015 when iOS 9 was introduced, and we were finally given a way to manage all of our assets in one place with Asset Catalogs. A few years later, support […]
Tracking Original URL Through Authentication
If you read my other post about refreshing AWS tokens, then you probably have a use case for keeping track of the original requested resource while the user goes through authentication so you can route […]
Using Spring Beans in a Kafka Streams ExceptionHandler
There are many things to know before diving into Kafka Streams. If you haven’t already, check out these 5 things as a starting point. Bullet 2 mentions designing for exceptions. Ironically, this seems to be […]