我正在尝试编写一个自定义 Gradle
任务,该任务将从 .sql 文件中获取 mysql
创建和插入语句。这就是我的想法:-
task initdb() {
def mysql = buildscript.configurations.classpath.find { it.toString().contains("mysql-connector-java") }
// URLClassLoader loader = GroovyObject.class.classLoader
def db = [url: "jdbc:mysql://127.0.0.1/",
user: "root", password: "admin", driver: 'com.mysql.cj.jdbc.Driver']
def sql = groovy.sql.Sql.newInstance(db.url, db.user, db.password, db.driver)
}
我收到一条错误消息,提示未找到驱动程序类。我在这里做错了什么?
最佳答案
Gradle 任务的类路径和项目的类路径不是一回事。 此外,Gradle 任务的配置和执行是两个不同的事情。
您需要以下内容:
buildscript {
repositories {
mavenCentral() // assuming your driver can be found there, if not, a custom repository
}
dependencies {
// Add the driver, and its dependencies, to the buildscript classpath
classpath "<driver dependency coordinates>"
}
}
task initdb() {
doLast {// Make sure the code is run during execution phase and not configuration phase
def mysql = buildscript.configurations.classpath.find { it.toString().contains("mysql-connector-java") }
// URLClassLoader loader = GroovyObject.class.classLoader
def db = [url: "jdbc:mysql://127.0.0.1/",
user: "root", password: "admin", driver: 'com.mysql.cj.jdbc.Driver']
def sql = groovy.sql.Sql.newInstance(db.url, db.user, db.password, db.driver)
}
}
关于java - 创建自定义 gradle 任务来获取 mysql 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60985911/