首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将外部jar文件添加到gradle构建脚本

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

Stack Overflow用户
提问于 2011-06-13 19:33:44
回答 3查看 36.9K关注 0票数 30

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

代码语言:javascript
复制
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]
    }
}

我尝试在Ubuntu Lucid盒中运行它,但总是失败。gradle报告信息:任务':connectToDb‘执行失败。原因: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

似乎构建脚本没有包含mysql连接器jar library.Can,谁能告诉我如何正确配置外部jar文件?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-29 18:27:19

这对我很有效。请参阅此帖子,了解为什么使用http://gradle.1045684.n5.nabble.com/using-jdbc-driver-in-a-task-fails-td1435189.html

代码语言:javascript
复制
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]
    }
}
票数 43
EN

Stack Overflow用户

发布于 2011-06-14 00:53:22

我有过这样的幸运经历:

代码语言:javascript
复制
buildscript {
    dependencies {
        classpath fileTree(dir: '/usr/share/java',
            includes: ['mysql-connector-java.jar'])
    }
}

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

代码语言:javascript
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'mysql:mysql-connector-java:5.1.16'
    }
}
票数 10
EN

Stack Overflow用户

发布于 2016-04-01 03:21:40

下面的代码片段适用于在、Microsoft SQL SERVER、中连接和查询数据库。请注意,微软不会将jar文件‘sqljdbc42.jar’(它是jdbc驱动程序)放在任何在线存储库(如MavenCentral() )上。因此,您需要从Microsoft的网站下载此jar,并将其保存在项目工作空间目录中。Download 'sqljdbc_4.2.6420.100_enu.exe'

解压缩下载的文件并转到sqljdbc_ 4.2 --> Microsoft JDBC Driver 4.2 for SQL Server-->enu。在这里,您将看到文件sqljdbc42.jar。将文件复制到项目工作区。我将‘lib’复制到目录中。

代码语言:javascript
复制
            repositories {
                flatDir name: 'localRepository', dirs: 'lib'
            }
            configurations {
                driver
            }
            dependencies {
                driver group: 'sql', name: 'sqljdbc42', version:''
            }


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

            task connectToCoreDb << {
                def props = [user: 'sa', password: 'shock', allowMultiQueries: 'true'] as Properties
                def connectionUrl = "jdbc:sqlserver://cpt-op-01-db1:1433;databaseName=buds"
                def driver = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
                def sql = Sql.newInstance(connectionUrl, props, driver)
                sql.eachRow('SELECT name, alias, expiry_date FROM [buds].[dbo].[obj_keystore] ) { row ->
                    println "$row.name $row.alias $row.expiry_date"
                }
                logger.info "Closing connection..."
                sql.close()
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6329872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档