我有一些通用的 jdbc 相关代码,我想将它们单独打包到一个可运行的 jar 中,其中已包含所需的 jdbc 库,因此每种数据库类型都有一个单独的可运行 jar。源将保持不变,但打包的 jdbc jar 会有所不同。
例如 jdbc-app-postgres.jar 将只包含 postgres jdbc jar,而 jdbc-app-mysql.jar 将包含 mysql jdbc jar。
是否可以使用 gradle 处理任务或其他任何事情?
似乎应该可以使用自定义 shadowJar 任务和自定义配置,但据我所知,自定义 shadow jar 任务无法正确使用包含的完整依赖项(例如:https ://github.com/约翰伦格尔曼/影子/问题/448)
理想情况下,解决方案看起来像,但任何对我有用的东西
configurations {
mysql.extendsFrom implementation
}
....
task buildMysql(type: ShadowJar) {
archiveName = "jdbc-mysql.${extension}"
from sourceSets.main.output
configurations = [configurations.mysql]
}