Groovy gradle build.gradle依赖项-oracle驱动程序?

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

我对build.gradle文件本身有一个jar依赖项。我使用这个定义:

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