2011-10-10 12 views
12

Jak mogę wykonać SQL w zadaniu Gradle?Wykonywanie SQL w zadaniu Gradle?

configurations { 
    compile 
} 
repositories { 
    mavenCentral() 
} 
dependencies { 
    compile 'postgresql:postgresql:9.0-801.jdbc4' 
} 
task sql << { 
    driverName = 'org.postgresql.Driver' 
    Class.forName(driverName) 
    groovy.sql.Sql sql = Sql.newInstance(
     'jdbc:postgresql://localhost:5432/postgres', 
     'username', 
     'password', 
     driverName 
    ) 
    sql.execute 'create table test (id int not null)' 
    sql.execute 'insert into test (id) values(1)' 
    sql.eachRow 'select * from test' { 
     println it 
    } 
} 

dostaję java.lang.ClassNotFoundException: org.postgresql.Driver wyjątek podczas wykonywania zadania SQL.

+1

Zobacz http://stackoverflow.com/questions/6329872/how-to-add-external-jar- Plik-to-gradle-build-script na przykład z MySql. – thoredge

+0

http://stackoverflow.com/questions/29010312/gradle-cannot-execute-sql-driver-not-found – yazabara

Odpowiedz

16

Aby zdefiniować samą external dependencies for the build script, należy umieścić ją w ścieżce klas skryptów kompilacji. Możesz to zrobić, definiując go w ramach zamknięcia buildscript.

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'postgresql:postgresql:9.0-801.jdbc4' 
    } 
} 
0

Jeśli nie masz nic przeciwko, w zależności od innego narzędzia, możesz wykorzystać dbdeploy w swoim projekcie. Istnieje również gradle plugin, który umożliwia import skryptów SQL , podobnie jak.

-1

Oto jeden sposób:

gradle.class.classLoader.addURL(new File('../../../../lib/server/mssql/sqljdbc4.jar').toURI().toURL()) 
def Sql sql = Sql.newInstance(dbConnectionURL, dbUserName, dbPassword, dbDriverName) 
String sqlString = new File(dbSchemaFile as String).text 

sql.execute(sqlString) 
0
buildscript { 
    dependencies { 
     classpath 'com.oracle:ojdbc6:11.2.0.3' 
    } 
} 

task tmp() { 
    dependsOn configurations.batch 
    doLast { 
     ant.sql(classpath: buildscript.configurations.classpath.asPath, 
      driver: "oracle.jdbc.OracleDriver", 
      url: "${dbConn}", userid: "${dbUser}", password: "${dbPass}", 
      "select 1 from dual") 
    } 
} 

Alternatywnie:

ant.sql(classpath: buildscript.configurations.classpath.asPath, 
     driver: "oracle.jdbc.OracleDriver", 
     url: "${dbConn}", userid: "${dbUser}", password: "${dbPass}") { 
    fileset(dir: dir) { 
     include(name: "**/*.sql") 
    } 
} 
Powiązane problemy