Here how it works on my machine.
I've added configuration
configurations {
driver
}
My dependency looks like this
dependencies {
driver 'org.postgresql:postgresql:9.2-1003-jdbc4'
}
My buildscript
dependency
buildscript {
dependencies {
classpath 'org.postgresql:postgresql:9.2-1003-jdbc4'
}
}
And here my initdb
task
task initdb(dependsOn: initProperties) << {
URLClassLoader loader = GroovyObject.class.classLoader as URLClassLoader
configurations.driver.each {
File file -> loader.addURL(file.toURI().toURL())
}
Class driver = loader.loadClass(props.getProperty("db.driver")) //org.postgresql.Driver
def sql = Sql.newInstance(
props.getProperty("db.url") + "/postgres",
props.getProperty("db.admin"),
props.getProperty("db.admin.password"),
props.getProperty("db.driver")
);
FileTree tree = null
//create database
fileTree(dir: 'src/main/sql/db', include: "0010_create_data_base.sql").each {
sql.execute(it.text)
}
//initalizing it again to new database
sql = Sql.newInstance(
props.getProperty("db.url") + "/" + props.getProperty("db.name"),
props.getProperty("db.admin"),
props.getProperty("db.admin.password"),
props.getProperty("db.driver")
);
//create schema
fileTree(dir: 'src/main/sql/db', include: "0020_create_schema.sql").each {
sql.execute(it.text)
}
//create tables
fileTree(dir: 'src/main/sql/tables', include: "**.sql").each {
sql.execute(it.text)
}
//load data
fileTree(dir: 'src/main/sql/data', include: "**.sql").each {
sql.execute(it.text)
}
}