【问题标题】:How to connect to MySQL from script in Gradle如何从 Gradle 中的脚本连接到 MySQL
【发布时间】:2016-01-27 09:06:41
【问题描述】:

我想通过build.gradle 连接到 MySQL 我不想从某个指定文件夹中选择驱动程序,例如下面的注释行//loader.addURL(file(JDBC_ARCHIVE_PATH).toURL())。我希望它像这样从 build.gradle 中指定的依赖项中选择驱动程序 dependencies { compile 'mysql:mysql-connector-java:5.1.37' }我该怎么做?

task loadDriver {
    URLClassLoader loader = GroovyObject.class.classLoader
    //loader.addURL(file(JDBC_ARCHIVE_PATH).toURL())
    java.sql.DriverManager.registerDriver(loader.loadClass(analyticsDriverClassName).newInstance())
}

// Connect to the database
// The task expects the following properties:
//  * analyticsDbUrl
//  * analyticsDbUsername
//  * analyticsDbPassword
task callDatabase() {
    println "Connecting to database '$analyticsDbUrl' with user '$analyticsDbUsername' ..."
    def sql = groovy.sql.Sql.newInstance(analyticsDbUrl, analyticsDbUsername, analyticsDbPassword)
    println '... connected'
}

【问题讨论】:

  • 将依赖项添加到 buildscript/dependencies 部分并直接在您的 gradle 代码中使用该类。
  • @RaGe Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 这发生了。

标签: java mysql gradle build.gradle


【解决方案1】:
buildscript{
    repositories{
        jcenter()
    }

    dependencies{
        classpath 'mysql:mysql-connector-java:5.1.37'
    }
}

task something()<<{
   def mysql = buildscript.configurations.classpath.find { it.toString().contains("mysql-connector-java") }
   URLClassLoader loader = GroovyObject.class.classLoader
   loader.addURL(file(mysql).toURL())

   def db = [url: "jdbc:mysql://127.0.0.1/mydb?",
          user: "root", password: "password", driver: 'com.mysql.jdbc.Driver']
   def sql = groovy.sql.Sql.newInstance(db.url, db.user, db.password, db.driver)
}

【讨论】:

    【解决方案2】:
    import com.mysql.jdbc.Driver
    
    buildscript{
        repositories{
            jcenter()
        }
    
        dependencies{ // Any dependencies for classes you want to use in your buildscript go here
            classpath 'mysql:mysql-connector-java:5.1.37'
        }
    }
    
    task something()<<{
        Driver driver = new Driver()
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2017-02-12
      • 2018-11-02
      • 1970-01-01
      相关资源
      最近更新 更多