gradle 脚本 class 路径仅包含脚本 class

gradle script classpath contains only script class

试图将 jdbc postgresql 驱动程序添加到 gradle 脚本,我使用了 bildscript.dependencies.classpath DSL,但 groovy.sql.Sql 找不到它。所以我尝试打印 class 路径: ((URLClassLoader)this.class.classloader).getURLS.each{ println("#### ${it}") }

所有打印的都是 gradle 临时编译文件所在的目录,那么其余目录在哪里?罐子? 顺便说一句,我可以在我的脚本中使用导入并从 postgres sql 包中实例化 classes。 我的猜测是 sql 包在错误的 classloader 中寻找 class,和我一样,所以有人知道如何获得 class loader 吗?实例化驱动程序并将其添加到 DriverManager 是否可以解决问题?

在我的 Gradle 脚本中克服 DriverManager 的问题,它本质上是一个 Groovy 脚本。我必须做相当于

GroovyObject.class.classLoader.addURL(new File('path/to/jar/with/sql/driver.jar').toURI().toURL())
Class.forName('foo.bar.sql.Driver')

之后可以Sql.newInstance dbConnectionString, dbUser, dbPassword

也许这对您也有帮助运行。