必要な jdbc ライブラリが既に含まれている実行可能な jar に個別にパッケージ化したい一般的な jdbc 関連のコードがあるため、データベースの種類ごとに個別の実行可能な jar があります。ソースは同じままですが、パッケージ化された jdbc jar は異なります。
たとえば、jdbc-app-postgres.jar には postgres jdbc jar のみが含まれ、jdbc-app-mysql.jar には mysql jdbc jar が含まれます。
gradle を使用して、タスクなどでこれを行うことは可能ですか?
カスタムのshadowJarタスクとカスタム構成で可能であるように思われますが、私が知る限り、カスタムのシャドウjarタスクは完全な依存関係を含めて正しく動作していません(例: https://github.com/ johnrengelman/shadow/issues/448 )
理想的には、ソリューションは次のようになりますが、機能するものは何でも問題ありません
configurations {
mysql.extendsFrom implementation
}
....
task buildMysql(type: ShadowJar) {
archiveName = "jdbc-mysql.${extension}"
from sourceSets.main.output
configurations = [configurations.mysql]
}