2012-03-13 22 views
2

私はbuild.gradleファイル自体にjar依存関係があります。このタスクでgradle build.gradle依存関係 - Oracleドライバ?

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) 
} 

しかし、私はこの例外を取得:

Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:452) 
    at org.gradle.api.internal.AbstractTask$ClosureTaskAction.execute(AbstractTask.java:436) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:60) 
    ... 54 more 
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 
    at build_5kgfd83hhriam4rhlh34a1l160$_run_closure3.doCall(/Users/localadmin/projects/test-case-runner/build.gradle:41) 
    ... 57 more 

ここで起こって何ができますか?私はクラスパスの定義について何の誤りもないので、私は依存関係の解決がうまくいっていると仮定しています。何が失敗する可能性がありますか?あなたはGradleのを使用しているので

+0

ワイルドな推測で動作するように、それは短く、簡単にするためにグルーヴィー使用することができますが、私はあなたの依存関係が「ojdbc16」という名前で気づきました瓶の名前を変更しましたか?元の名前は 'ojdbc6' – rlovtang

+0

'classpath 'を試しましたか?ojdbc16:''代わりに?私は、あなたのJARファイルは、そのファイル名にダッシュで区切られた定義済みのバージョン番号を持っていないと思いますか? –

+0

下記の私の更新された答えを読んでも構いません:P。 –

答えて

3
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') 
} 
+0

私はmysqlと同じトリックを使用しており、それもそこで動作します:http://stackoverflow.com/questions/6329872/how-to-add-external-jar-files-to-gradle-build-script – thoredge

0

、あなたが持っている、あなたにも

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