我正在努力解决如何处理 jar 依赖 hell 。我有一个使用一些 aws sdk 的 Maven-IntelliJ Scala 项目。最近添加的 kinesis sdk 引入了不兼容的 Jackson 版本。
我的问题是 : 我如何系统地处理 Jar hell 的问题?
我了解类加载器以及 maven 如何在重复的 Jars 之间进行选择,但对于解决该问题的实际实际步骤,我仍然一头雾水。
我目前的尝试是基于反复试验,我在这里用 jackson 的例子来概述:
mvn dependency:tree
找出我实际使用的是哪个版本的 Jackson (问题 2:有没有一种自动的方式来询问 maven 正在使用哪个版本的 jar,而不是梳理树输出?) . mvn dependency:tree
添加 Kinesis SDK 之前和之后的输出,以检测 mvn dependency:tree
中的差异输出,并希望看看 jackson 版本是否改变。 (问题 3:当依赖解析发生时,maven 如何使用阴影 jar 中的库?和其他一样吗?) . 最后,在比较树输出之后,我尝试在 POM 中显式添加 Jackson 的最新工作版本,以触发 maven 依赖解析链中的优先级。如果最新的不起作用,我添加下一个最新的库,依此类推。
整个过程非常繁琐。除了我提出的具体问题外,我也很好奇其他人对这个问题的系统方法。有没有人有他们使用的任何资源?
最佳答案
使用Maven Helper plugin通过排除旧版本的依赖项来轻松解决所有冲突。
关于java - 使用 Maven 处理依赖 hell 的系统方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33907162/