Apache Mave Shade Plugin と shaded jar
#Maven
Apache Maven Shade Pluginを使うと推移依存による競合を解決したjarを作成することができる
https://maven.apache.org/plugins/maven-shade-plugin/
https://qiita.com/autotaker1984/items/9265b28553e74a9a8fb0
各configurationの雰囲気
transfomers
複数のアーティファクトやライブラリをどのように集約するのかを指定できる
https://kazuhira-r.hatenablog.com/entry/2020/11/23/001949
relocations
あるライブラリが推移依存するライブラリのクラスを同梱する際の設定を入れる
https://qiita.com/autotaker1984/items/9265b28553e74a9a8fb0#:~:text=includes%3E%0A%20%20%20%20%3C/artifactSet%3E-,%3Crelocations%3E,-%3Crelocation%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cpattern
createDependencyReducedPom
relocationsの設定によって競合を解決しながらjarに同梱した版の、依存を排除したpom.xml (dependency-reduced-pom.xml)を作成することができる
作成されたjarとこのpom.xmlをmaven repositoryにアップロード」してやれば、推移例外の問題を排除したjarを作成することができる
https://stackoverflow.com/questions/22904573/what-is-the-purpose-of-dependency-reduced-pom-xml-generated-by-the-shade-plugin
https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#createDependencyReducedPom
promoteTransitiveDependencies
推移依存しているライブラリのうち、relocationsの設定でjarに同梱しなかったが依存したいライブラリを、dependency-reduced-pom.xmlに含めることができる
多分 、基本trueにするときはcreateDependencyReducedPom と組み合わせる感じかな
https://qiita.com/autotaker1984/items/9265b28553e74a9a8fb0#:~:text=オプションが%20%3C-,promoteTransitiveDependencies,-%3Eである