尽管以“ java方式”实现这一点似乎合乎逻辑,但我发现仅运行’
sh("mysql ... < file.sql")‘更直接。它避免了所有麻烦的类路径问题。它确实要求将数据库客户端安装在从属设备上,并且不允许数据库独立(不是很重要)。实际上,我实际上是在容器中运行mariadb的,所以生成的命令行更像是“
docker exec -i container mysql ... < file.sql”(注意“ -i”,而不是通常的“
-it”,因为如果在文件)。
更新 :
从macg33zr的肘部开始,我发现将任务添加到现有的Gradle构建脚本中来操作数据库非常容易。我尚未完全实现所需的功能,只是验证它可以与简单的“
select”语句一起使用。
我已经在单独的Gradle配置中拥有JDBC驱动程序jar,因为我需要将这些工件存储在容器的lib目录中。
以下是对所需部分的完整总结:https :
//discuss.gradle.org/t/jdbc-driver-class-cannot-be-loaded-with-
gradle-2-0-but-worked-with-1 -12/2277。关键的细微事情是将JDBC驱动程序jar添加到类加载器。



