我正在考虑为我的服务创建 uber jar 的想法,但我担心包含具有冲突依赖项的 jar。当 jar A 依赖 slf4j-1.0 而 jar B 依赖 slf4j-2.0 并且 1.0 和 2.0 之间有重大变化时会发生什么?当这些 jar 都包含在 uber jar 中时,我是否必须按命名空间编写特定的过滤器,或者在命名 jar 的影子进程中是否发生了某些事情?
谢谢您的帮助
我正在考虑为我的服务创建 uber jar 的想法,但我担心包含具有冲突依赖项的 jar。当 jar A 依赖 slf4j-1.0 而 jar B 依赖 slf4j-2.0 并且 1.0 和 2.0 之间有重大变化时会发生什么?当这些 jar 都包含在 uber jar 中时,我是否必须按命名空间编写特定的过滤器,或者在命名 jar 的影子进程中是否发生了某些事情?
谢谢您的帮助
你担心是对的。您最终会发生冲突(一位同事称其为“dll 再次地狱”),有时您可以在 jarfile 的同一目录中同时拥有来自 v1 和 v2 的类。
您可以轻松地排除一个或另一个版本,但如果您的依赖项同时需要它们,您将面临以下选项:
无论你做什么,gradle 依赖都是有帮助的。