Gradle and dbmaintain


dbmaintain is plugin (best for my opinion) that allowes to safely migrate dbscheme. It has excellent support for Maven and Ant but not for Gradle. But Gradle has excellent support for Ant, so we can call dbmaintain ant tasks from Gradle build script.

A small note - I prefer to not contain any libraries in my source code repository (Git currently), so dbmaintain will be loaded from the maven's central repository.


This text don't cover work with dbmaintain. If you need more information about this powerful db migration tool, please visit an official site:


In first step, we need add dbmaintain Ant task into our, but only for build time. dbmaintain.jar shouldn't be placed into WAR.

Add a new custom configuration (you can named it as you wish, for example dbmaintain):

configurations {

And add dbmaintain to antClasspath configuration:

dependencies {
	antClasspath "org.dbmaintain:dbmaintain:2.4" 

Add new task dbmaintain, that declare custom Ant tasks from dbmaintain (you can do it after dependencies block):

   resource: "dbmaintain-anttasks.xml", 
   classpath: configurations.antClasspath.asPath

Now we can use dbmantain's Ant tasks. Make recreate database gradle task:

task recreateDatabase << {
	def sqlFolder = "${rootDir}/src/main/sql"
	def config = "${rootDir}/src/test/resources/"
	ant.clearDatabase(configFile: config)	 
	ant.updateDatabase(scriptLocations: sqlFolder, configFile: config)

Now you can recreate database with Gradle:

gradle recreateDatabase

If you want to include this task into build lifecycle you should make processTestResource (default task from java plugin) depends on our new task:

processTestResources.dependsOn recreateDatabase
leonidv almost 10 years ago