2016-01-27 18 views
2

我想通過build.gradle連接到MySQL我不想從某些指定文件夾(如下面的註釋行//loader.addURL(file(JDBC_ARCHIVE_PATH).toURL()))中選擇驅動程序。我希望它從build.gradle中指定的依賴項中挑選驅動程序,如下所示 dependencies { compile 'mysql:mysql-connector-java:5.1.37' }我該怎麼做?如何從Gradle中的腳本連接到MySQL

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

添加依賴性buildscript /依賴性部分,直接使用類在gradle這個代碼。 – RaGe

+0

@RaGe'引起:java.lang.ClassNotFoundException:com.mysql.jdbc.Driver'這發生了。 –

回答

1
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() 
} 
0
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) 
}