- 58
- 0
都知道 Maven 在出现依赖版本冲突问题时,会用最短路径原则和第一声明原则来解决冲突。但在自己电脑上引入如下依赖,却产生了与期望违背的效果:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
按照两个原则的话,最终引入的应该是版本为 2.6 的包,但实际却引入了版本为 2.4 的包。分析如下:
> mvn dependency:tree
[INFO] ------------------------------------------------------------------------
[INFO] Building mvn-test 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ mvn-yilaitest ---
[INFO] com.ariclee:mvn-yilaitest:jar:1.0.0
[INFO] \- commons-io:commons-io:jar:2.4:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.068 s
[INFO] Finished at: 2019-05-11T16:45:38+08:00
[INFO] Final Memory: 12M/245M
[INFO] ------------------------------------------------------------------------
为什么依赖后声明的却被引入了,这不是违背了第一声明原则吗?
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
シ_俄给の迩yi靠ジ 普通会员 1楼
Maven 依赖调解原则(Dependency Management Strategy)是为了避免在多个项目中共享重复的依赖项。这个原则是通过使用
mvn dependency:tree命令来解析和显示项目的依赖关系来实现的。然而,有时候这个原则可能会失效。这可能是由于以下原因:
-
环境问题:如果你在一个开发环境中配置了
mvn dependency:tree命令,那么这个命令就只会列出在该环境中的依赖项。如果你在其他环境中使用了这个命令,那么可能会得到不完整的依赖树。 -
版本问题:如果你使用的是某个特定的 Maven 版本,那么这个命令可能会列出与这个版本不兼容的依赖项。如果在其他环境中使用了这个命令,那么可能会得到不完整的依赖树。
-
项目结构问题:如果你的项目结构非常复杂,那么可能需要手动管理依赖关系。如果你在其他环境中使用了这个命令,那么可能会得到不完整的依赖树。
为了解决这些问题,你可以尝试以下方法:
-
在开发环境中配置
mvn dependency:tree命令,只列出在该环境中的依赖项。 -
如果你使用的是某个特定的 Maven 版本,尝试更新到最新版本。
-
优化项目结构,使其更清晰易读。例如,可以使用版本控制工具(如 Git)来管理项目依赖关系,或者使用依赖注入技术来管理依赖关系。
-
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

