我有一个大型的多项目构建,它有一个单独的主文件夹,其中包含一个buildSrc目录,该目录构建了一个定义我们的打包系统的gradle插件。我设想的任务之一是在构建单个项目期间使用sqlite数据库作为数据源。因此,在buildSrc/build.gradle中,我定义了一个包含sqlite jar的存储库,并将dependencies块中的jar依赖项定义为
implementation 'org.sqlite:sqlite-jdbc:3.25.2'
这允许buildSrc中的单元测试成功完成,证明jar已成功下载和使用。我在buildSrc中定义了一个gradle插件,它添加了两个任务,一个是应用在项目中找到的sql文件(通过命令行),另一个是使用
sqlite = Sql.newInstance("jdbc:sqlite:"+dbLocation.absolutePath, "org.sqlite.JDBC")
sqlite.rows(query).each { row ->
sb.append(row.toString() + "\n")
}
问题是第二个任务失败了,但出现了异常
Caused by: java.sql.SQLException: No suitable driver found for jdbc:sqlitejdbc:sqlite:/var/folders/vh/_gy4rj65695108sd5fpcqfd00000gn/T/sqlite1762555617470507686.db
如您所见,我使用临时文件的绝对路径定义连接字符串
我尝试过的事情:
在上述错误发生后,我立即可以看到该文件存在
$ ls /var/folders/vh/_gy4rj65695108sd5fpcqfd00000gn/T/sqlite1762555617470507686.db
/var/folders/vh/_gy4rj65695108sd5fpcqfd00000gn/T/sqlite1762555617470507686.db
我提到这一点是因为它是要确保的事情之一,以确保文件没有因为某种原因而被删除。 我还运行了一个依赖项gradle命令,以查看从子项目目录中解析或未解析的jar列表;
$ ../../master/gradlew dependencies --configuration implementation --configure-on-demand
…
implementation - Implementation only dependencies for source set 'main'. (n)
+--- org.sqlite:sqlite-jdbc:3.25.2 (n)
\--- project rpm-base (n)
(n) - Not resolved (configuration is not meant to be resolved)
有趣的是,我看到它被解析为其他配置,事实上,除了实现之外的所有其他配置都被解析而没有(n)
runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.sqlite:sqlite-jdbc:3.25.2
我相信我的问题与依赖命令输出中的(n)有关,任何帮助都很感激。
我已经通过google输出,stackoverflow和chatgpt获得了建议,到目前为止没有任何工作。
感谢您的考虑和宝贵的时间。
1条答案
按热度按时间o8x7eapl1#
我无法使用Java驱动程序解决这个问题,而是选择使用命令行进行所有数据库查询。