我正在我的项目中重用一个基于开源maven的组件,该组件在组件uber-jar中包含一堆阴影(例如,使用maven-shade插件)直接和传递依赖。不幸的是,其中一些依赖项与我自己的项目所依赖的依赖项冲突。具体来说,组件的依赖关系可传递地包括servlet-api 2.x,而我的项目中需要3.x,它们似乎位于同一名称空间中。拉入servlet-api(lucene-demo)的组件的顶级依赖关系实际上不需要组件的功能,所以我很乐意尽可能删除它。我的项目是用Gradle构建的。
处理此类情况的推荐方法是什么?当我构建自己的项目时,有没有办法从重用的超级jar中删除有问题的依赖项?或者我应该自己重建重用的组件,排除麻烦的依赖?如果是这样,这可以自动完成,这样我就不需要维护自己的开源组件分支了吗?该组件目前在GitHub中托管,并通过Maven Central发布。
(正如你可能理解的那样,我对Maven和Gradle都是一个初学者,所以不要担心麻烦事情。)