Groovy gradle build.gradle依赖项-oracle驱动程序?
我对build.gradle文件本身有一个jar依赖项。我使用这个定义:Groovy gradle build.gradle依赖项-oracle驱动程序?,groovy,dependencies,gradle,Groovy,Dependencies,Gradle,我对build.gradle文件本身有一个jar依赖项。我使用这个定义: buildscript { repositories { flatDir { dirs 'lib' } } dependencies { classpath name: 'ojdbc16' } } 执行此任务时: task mytask() << { String updateQuery = "somequery" pri
buildscript {
repositories {
flatDir {
dirs 'lib'
}
}
dependencies {
classpath name: 'ojdbc16'
}
}
执行此任务时:
task mytask() << {
String updateQuery = "somequery"
println "Setting up test user with query:\n${updateQuery}"
Sql sql = Sql.newInstance("jdbc:oracle:thin:@//host:port/sid", user, password, 'oracle.jdbc.driver.OracleDriver')
boolean successful = sql.execute(updateQuery)
}
这到底是怎么回事?我没有得到任何关于类路径定义的错误,所以我假设我的依赖项解析工作正常。什么可能会失败?存储库{
repositories {
flatDir name: 'localRepository', dirs: 'lib'
}
configurations {
driver
}
task mytask() << {
URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each {File file ->
loader.addURL(file.toURL())
}
Class driverClass = loader.loadClass('oracle.jdbc.OracleDriver')
Driver driverInstance = driverClass.newInstance()
java.sql.DriverManager.registerDriver(driverInstance)
Sql sql = Sql.newInstance('jdbc-url','username','password')
}
flatDir名称:“localRepository”,目录:“lib”
}
配置{
司机
}
任务mytask()
loader.addURL(file.toURL())
}
类driverClass=loader.loadClass('oracle.jdbc.OracleDriver')
Driver driverInstance=driverClass.newInstance()
java.sql.DriverManager.registerDriver(driverInstance)
Sql=Sql.newInstance('jdbc-url','username','password')
}
既然您使用的是gradle,那么您也可以使用groovy使它变得更短、更易于使用
def props = [:]
def ds = new BasicDataSource()
ds.with {
url = props['database.url']
driverClassName = props['database.driverClassName']
password = props['database.password']
username = props['database.username']
}
def sql = new groovy.sql.Sql(ds)
def r = sql.firstRow 'select 1 as val from dual'
println r.val
胡猜,但我注意到您的依赖项名为“ojdbc16”,您是否重命名了jar?原始名称是“ojdbc6”,您是否尝试了
classpath':ojdbc16:'
?我相信您的JAR文件的文件名中没有用破折号分隔的已定义版本号,对吗?如果您阅读下面我的更新答案,语法很好:P.I一直在使用mysql的相同技巧,它也在那里工作:
def props = [:]
def ds = new BasicDataSource()
ds.with {
url = props['database.url']
driverClassName = props['database.driverClassName']
password = props['database.password']
username = props['database.username']
}
def sql = new groovy.sql.Sql(ds)
def r = sql.firstRow 'select 1 as val from dual'
println r.val