
通过 Maven 构建 Java 项目时,依赖版本是如何确定的?
Maven 依赖管理机制遵循两条主要原则:
- 最短路径优先
- pom 文件中先声明的优先级更高
确定依赖版本
在你的案例中,commons-codec 依赖的版本为 1.16.0,原因可能是:
- 项目pom 文件中没有显式指定任何依赖的版本,导致 Maven 使用了最近的版本(1.16.0)。
- pom 文件中包含了
标签,该标签指定了一个父级 pom 文件。父级 pom 文件可能已经声明了 commons-codec 依赖的版本。 - pom 文件中包含了
部分,用于统一管理依赖版本。其中可能已指定 commons-codec 依赖的版本。
解决版本冲突
如果不同依赖指定了冲突的版本,则 Maven 会应用以下规则:
- 优先使用最短路径的依赖。
- 如果存在多个最短路径,则优先使用 pom 文件中先声明的依赖。
- 如果在项目启动期间出现版本冲突,可以通过在启动类中明确导入所需的依赖版本来解决。
- 使用 Maven 插件(例如 Maven Helper)可视化依赖关系树并识别依赖冲突。










