Java Gradle buildscript没有';找不到Postgresql JDBC驱动程序

Java Gradle buildscript没有';找不到Postgresql JDBC驱动程序,java,postgresql,gradle,jdbc,build.gradle,Java,Postgresql,Gradle,Jdbc,Build.gradle,我正试图用gradle任务建立数据库。但是我没有任何运气找到postgresql JDBC驱动程序。在java项目中,它找到了驱动程序并运行良好(虽然它没有通过buildscript获得依赖关系),但没有找到gradle.build文件 我尝试使用groovy.sql,但也遇到了同样的错误 buildscript { repositories { mavenCentral() } dependencies { classpath 'org.postgresql:postgres

我正试图用gradle任务建立数据库。但是我没有任何运气找到postgresql JDBC驱动程序。在java项目中,它找到了驱动程序并运行良好(虽然它没有通过buildscript获得依赖关系),但没有找到gradle.build文件

我尝试使用groovy.sql,但也遇到了同样的错误

buildscript {
 repositories {
   mavenCentral()
 }

 dependencies {
  classpath 'org.postgresql:postgresql:42.2.0'
 }
}

import java.sql.*
task testTask {
 ...
此行抛出一个错误: 未找到适合jdbc的驱动程序:postgresql://localhost:5432/db

 Connection conn = DriverManager.getConnection(db.url, db.user, db.password) 
 ...
}
我从伊夫里诺·博米塔利的一位记者那里得到了答案。他解释得很简洁。一定要查看他引用的帖子

我在Postgresql中使用的代码:

import groovy.sql.Sql
task queryTest () {
    configurations {
        jdbc
    }
    dependencies {
        jdbc 'org.postgresql:postgresql:42.2.0'
    }

    doLast {
        def sqlClassLoader = Sql.classLoader
        configurations.jdbc.each { sqlClassLoader.addURL it.toURI().toURL() }

        def driver = 'org.postgresql.Driver'
        def dburl = "jdbc:postgresql://localhost:5432/testdb"
        def first
        Sql.withInstance(dburl, 'tester', 'password', driver) {
            sql ->
                first = sql.firstRow( "SELECT * FROM users" )
        }
    }
}

Buildscript现在不必在任务之前声明,因为依赖关系在任务中得到解决。

使用postgres和gradle 4.10.3也有同样的问题。似乎关键行是访问Sql.classloader并向其中添加jdbc配置的地方。我使用globalbuildscript.configurations.classpath.each这样做了,它对我很有用。