如何将外部jar文件添加到gradle构建脚本

Jef*_* Li 29 gradle

现在我使用gradle作为我的构建工具.我的一个任务需要访问mysql数据库.以下是我的gradle脚本:

import groovy.sql.Sql

buildscript {
    dependencies {
        classpath files('/usr/share/java/mysql-connector-java.jar')
    }
}


task connectToDb << {
    def props = [user: 'user', password: 'password', allowMultiQueries: 'true'] as Properties
    def url = 'jdbc:mysql://mysqlhost:3306/db'
    def driver = 'com.mysql.jdbc.Driver'
    def sql = Sql.newInstance(url, props, driver)

    sql.eachRow('show tables') { row ->
        println row[0]
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在Ubuntu Lucid框中运行它,但它总是失败.gradle抱怨信息:任务':connectToDb'的执行失败.原因:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

似乎构建脚本不包含mysql连接器jar库.任何人都可以告诉我如何正确配置外部jar文件?谢谢.

tho*_*dge 42

这适合我.请参阅此主题,了解http://gradle.1045684.n5.nabble.com/using-jdbc-driver-in-a-task-fails-td1435189.html的原因:

import groovy.sql.Sql

repositories {
    mavenCentral()
}
configurations {
    driver
}
dependencies {
    driver group: 'mysql', name: 'mysql-connector-java', version: '5.1.16'
}

URLClassLoader loader = GroovyObject.class.classLoader
configurations.driver.each {File file ->
    loader.addURL(file.toURL())
}

task connectToDb << {
    def props = [user: 'user', password: 'password', allowMultiQueries: 'true'] as Properties
    def url = 'jdbc:mysql://mysqlhost:3306/db'
    def driver = 'com.mysql.jdbc.Driver'
    def sql = Sql.newInstance(url, props, driver)

    sql.eachRow('show tables') { row ->
        println row[0]
    }
}
Run Code Online (Sandbox Code Playgroud)


Ala*_*ger 10

我有幸这样的事情:

buildscript {
    dependencies {
        classpath fileTree(dir: '/usr/share/java',
            includes: ['mysql-connector-java.jar'])
    }
}
Run Code Online (Sandbox Code Playgroud)

坦率地说,在你的情况下,我更喜欢这个:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'mysql:mysql-connector-java:5.1.16'
    }
}
Run Code Online (Sandbox Code Playgroud)