具有冲突依赖项的Gradle shadow jar

具有冲突依赖项的Gradle shadow jar,gradle,build.gradle,uberjar,Gradle,Build.gradle,Uberjar,我一直在考虑为我的服务创建uber jar,但我担心会包含具有冲突依赖关系的jar。当jar A依赖于slf4j-1.0,jar B依赖于slf4j-2.0,并且在1.0和2.0之间有重大变化时,会发生什么情况?当这些jar都包含在uber jar中时,我是否必须按名称空间编写特定的过滤器,或者在将jar命名为名称空间的影子过程中是否发生了什么事情 谢谢你的帮助你担心是对的。您最终会遇到冲突(一位同事再次称之为“dll地狱”),有时您可以将v1和v2中的类放在JAR文件的同一目录中 您可以轻松排

我一直在考虑为我的服务创建uber jar,但我担心会包含具有冲突依赖关系的jar。当jar A依赖于slf4j-1.0,jar B依赖于slf4j-2.0,并且在1.0和2.0之间有重大变化时,会发生什么情况?当这些jar都包含在uber jar中时,我是否必须按名称空间编写特定的过滤器,或者在将jar命名为名称空间的影子过程中是否发生了什么事情


谢谢你的帮助

你担心是对的。您最终会遇到冲突(一位同事再次称之为“dll地狱”),有时您可以将v1和v2中的类放在JAR文件的同一目录中

您可以轻松排除一个或另一个版本,但如果您的依赖项同时需要它们,您将面临以下选项:

  • 找到一个没有冲突的新依赖项
  • 升级或降级当前依赖项以使版本一致
  • 作为war文件或其他更好地处理此问题的文件类型发布,包括带有包含类路径的清单的普通JAR文件
  • 考虑spring boot,它使用与着色不同的策略:
无论您做什么,gradle依赖项都是有用的