Frage

I'm trying to run several *.sql scripts. My gradle task looks like this

task initdb(dependsOn: initProperties) << {
Class.forName(props.getProperty("db.driver"))
sql = Sql.newInstance(
        props.getProperty("db.url"),
        props.getProperty("db.admin"),
        props.getProperty("db.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)
}
//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)
}
}

Properties file contains

db.admin=admin
db.admin.password=pass
db.driver=org.postgresql.Driver
db.url=jdbc:postgresql://localhost:5432

My dependency for the driver

dependencies {
    //jdbc postresql
    compile 'org.postgresql:postgresql:9.2-1004-jdbc4'
}

Also there is a classpath

buildscript {
    dependencies {
        classpath 'org.postgresql:postgresql:9.2-1004-jdbc4'
    }
}

But I've got an error

enter image description here

What's the problem? It cannot find .jar?

War es hilfreich?

Lösung

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)
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top