Maven 依赖管理
依赖传递
依赖树查看
# 查看依赖树
$ mvn dependency:tree
# 查看特定依赖的传递路径
$ mvn dependency:tree -Dincludes=org.springframework:spring-core
# 分析依赖冲突
$ mvn dependency:analyze
依赖冲突解决
<!-- 使用 dependencyManagement 统一管理版本 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.21</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 排除冲突的传递依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
</dependency>
BOM(Bill of Materials)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
依赖分析命令
# 分析未使用的依赖
$ mvn dependency:analyze
# 查找重复的依赖
$ mvn dependency:analyze-duplicate
# 解析依赖
$ mvn dependency:resolve
# 复制依赖到目录
$ mvn dependency:copy-dependencies -DoutputDirectory=lib
最佳实践
- 使用 dependencyManagement 统一管理版本
- 定期检查和清理未使用的依赖
- 使用 BOM 简化版本管理
- 避免使用版本范围,使用具体版本
- 及时更新依赖版本,关注安全漏洞