I’m posting this here because I thought it might be interesting and/or useful to other Liquibase users, and also because I’d be interested in hearing other folks’ perspective, as I’m coming at things from a different perspective.
The problem of database schema management is of course an old one, and a long while back (before Liquibase existed) some coworkers and I developed our own schema management tool. Over time variants and partial re-inventions of this tool have found their way into a few different projects.
Later, I looked at Liquibase as a possible replacement for our this tool. However Liquibase still didn’t have the features we needed, which were:
- Automatic initialization of the database schema when the application runs for the first time
- Automatic application of database schema updates as needed during each application startup cycle
- Automated tracking and constraint-based ordering of schema updates supporting multiple code branches
- Integration with Spring allowing simple XML declaration of updates
- Provides a DataSource implementation
- An ant task that verifies schema update correctness
My project does use Liquibase for the schema verification part (i.e., the schema “diff” operation) and it’s working great.