Maven shade插件:如何对第三方依赖项的可传递依赖项进行着色

Maven shade插件:如何对第三方依赖项的可传递依赖项进行着色,maven,maven-shade-plugin,Maven,Maven Shade Plugin,输入 我正在开发一个使用Kafka客户端0.11(KC-0.11)的基础架构。KC-0.11有它自己的依赖关系 项目X旨在使用我的infra。ProjectX还使用不同的infra,它使用Kafka客户端0.8(KC-0.8)。显然,KC-0.8有它自己的依赖项(类似于KC-0.11,仅适用于早期版本…) 我需要project X能够同时使用KC-0.8和KC-0.11。 为此,我使用了maven shade插件,其中(在我的infra中)我在我的jar中对KC-0.11进行了着色 问题 着色仅

输入

我正在开发一个使用Kafka客户端0.11(KC-0.11)的基础架构。KC-0.11有它自己的依赖关系

项目X旨在使用我的infra。ProjectX还使用不同的infra,它使用Kafka客户端0.8(KC-0.8)。显然,KC-0.8有它自己的依赖项(类似于KC-0.11,仅适用于早期版本…)

我需要project X能够同时使用KC-0.8和KC-0.11。 为此,我使用了maven shade插件,其中(在我的infra中)我在我的jar中对KC-0.11进行了着色

问题

着色仅针对KC-0.11执行,不针对KC-0.11的依赖项执行,但我还需要着色KC-0.11的可传递依赖项。 (我必须对KC-0.11的可传递依赖项进行着色,以便KC-0.8可以像以前一样使用其原始依赖项。KC-0.8无法使用其依赖项的高级版本)

问题

  • 我如何在jar中隐藏KC-0.11的可传递依赖项,而不用手动逐个拾取它们
  • 一般来说:在着色的情况下,这不是默认选项吗?每次我给第三方着色时,我都需要对其所有(可传递的)依赖项进行着色,以确保其正常工作,这难道没有意义吗