Gradle:无法执行sql,找不到驱动程序
我有以下Gradle:无法执行sql,找不到驱动程序,gradle,Gradle,我有以下gradle脚本。这导致没有找到合适的驱动程序错误,我觉得很奇怪 buildscript { repositories{ maven { url = 'http://localhost:8090/nexus/content/groups/public/' } } dependencies { classpath 'com.oracle:ojdbc6:11.2.0.4.0' } } t
gradle
脚本。这导致没有找到合适的驱动程序
错误,我觉得很奇怪
buildscript {
repositories{
maven {
url = 'http://localhost:8090/nexus/content/groups/public/'
}
}
dependencies {
classpath 'com.oracle:ojdbc6:11.2.0.4.0'
}
}
task sql << {
def url = 'jdbc:oracle:thin:@' + project.properties['db_hostname'] + ':' + project.properties['db_port'] + ':' + project.properties['db_sid']
println 'sql, db url:' + url
def driverName = 'oracle.jdbc.OracleDriver'
Class.forName(driverName).newInstance();
groovy.sql.Sql sql = groovy.sql.Sql.newInstance(
url,
project.properties['db_username'],
project.properties['db_password'],
driverName
)
}
驱动程序jar加载在与Sql类不同的类加载器上下文中。要修复此问题,请尝试添加以下内容:
// Add jars resolved by buildscript classpath configuration to the classloader which Sql will use
URLClassLoader loader = groovy.sql.Sql.class.classLoader
project.buildscript.configurations.classpath.each { File file ->
loader.addURL(file.toURL())
}
在调用Sql.newInstance()
之前。它将使您的所有类路径依赖项都可用于加载Sql
类的Groovy类加载器。Class.forName()
应该不是必需的
有关更多信息,请参见此处的讨论:
对于我来说,这不起作用(Gradle 2.12)
但不是表演:
Class.forName("org.h2.Driver")
我做到了:
groovy.sql.loadDriver("org.h2.Driver")
Groovy
Sql.loadDriver
方法做了一些漂亮的类加载器工作。您应该使用如下内容:
configurations {
db2database
}
buildscript {
dependencies {
classpath('com.ibm.db2:db2jcc4:10.5.5')//db2 driver for gradle task
}
}
dependencies {
db2database "com.ibm.db2:db2jcc4:10.5.5" //db2 driver for configuration
}
//load drivers for gradle tasks
configurations.db2database.each {
GroovyObject.class.classLoader.addURL(it.toURI().toURL())
}
....
Sql sql = Sql.newInstance(
envProps.getProperty('dbUri'),
envProps.getProperty('dbUsername'),
envProps.getProperty('dbPassword'),
envProps.getProperty('dbDriverClassName')
)
println sql.rows("SELECT * FROM TEST.TEST")
configurations {
db2database
}
buildscript {
dependencies {
classpath('com.ibm.db2:db2jcc4:10.5.5')//db2 driver for gradle task
}
}
dependencies {
db2database "com.ibm.db2:db2jcc4:10.5.5" //db2 driver for configuration
}
//load drivers for gradle tasks
configurations.db2database.each {
GroovyObject.class.classLoader.addURL(it.toURI().toURL())
}
....
Sql sql = Sql.newInstance(
envProps.getProperty('dbUri'),
envProps.getProperty('dbUsername'),
envProps.getProperty('dbPassword'),
envProps.getProperty('dbDriverClassName')
)
println sql.rows("SELECT * FROM TEST.TEST")