The latest release of the Carbon Five Database Migration maven plugin supports a new goal: check. The check goal fails the build if the database isn’t up to date. That is, if there are pending migrations the plugin produces a clear message explaining that the database is out of date and lists the pending migrations. Run mvn test and see something like this:
[INFO] ————————————————————————
[INFO] Building Gearlist – Data Access
[INFO] task-segment: [test]
[INFO] ————————————————————————
[INFO] [db-migration:check {execution: default}]
[INFO] Checking jdbc:mysql://localhost/gearlist_test using migrations at src/main/db/migrations/.
[INFO] Loaded JDBC driver: com.mysql.jdbc.Driver
[WARNING] There are 2 pending migrations:
20100116010256_audit_tracking.sql
20100121052539_add_daily_reports.sql
Execute db-migration:migrate to apply pending migrations.
[INFO] ————————————————————————
[ERROR] BUILD ERROR
[INFO] ————————————————————————
[INFO] There are 2 pending migrations, migrate your db and try again.
It’s very easy to include the check goal in your build lifecycle if you’re already using the db-migration-maven-plugin.
...
<build>
<plugins>
<plugin>
<groupId>com.carbonfive.db-support</groupId>
<artifactId>db-migration-maven-plugin</artifactId>
<version>0.9.9-m2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<url>jdbc:mysql://${db.host}/${db.name}</url>
<username>${db.username}</username>
<password>${db.password}</password>
</configuration>
</plugin>
</plugins>
</build>
Check out the project home for additional documentation and details. There’s also a simple, complete example application showing off this configuration.
Enjoy!
Christian