Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to connect to MySQL from script in Gradle

I want to connect to MySQL through build.gradle I do not want to pick driver from some specified folder like below commented line //loader.addURL(file(JDBC_ARCHIVE_PATH).toURL()). I want it to pick driver from dependencies specified in build.gradle like this dependencies { compile 'mysql:mysql-connector-java:5.1.37' } How can I do that?

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'
}
like image 796
Bilal Shah Avatar asked Oct 24 '25 23:10

Bilal Shah


1 Answers

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)
}
like image 73
Anders B Avatar answered Oct 27 '25 13:10

Anders B



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!