管理Maven 依赖、解决依赖冲突、配置 BOM 或优化 Java 项目依赖树。
Maven依赖性管理是一项面向实际任务的技能,主要用于Maven主依赖性管理,包括依赖性申报、范围管理、版本分辨率、BOMs和依赖树优化。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
掌握 Maven 依赖管理,包括依赖声明、作用域管理、版本解析、BOM(物料清单)以及依赖树优化。
Maven 的依赖管理是 Java 项目构建系统的核心机制。它处理传递性依赖、版本冲突,并为多模块项目提供跨模块的依赖解析控制能力。
org.springframework.boot spring-boot-starter-web 3.2.0
org.junit.jupiter junit-jupiter 5.10.1 test
com.google.code.findbugs jsr305 3.0.2 true
| 作用域 | 编译类路径(Compile CP) | 测试类路径(Test CP) | 运行时类路径(Runtime CP) | 是否参与传递 |
|---|---|---|---|---|
| compile | 是 | 是 | 是 | 是 |
| provided | 是 | 是 | 否 | 否 |
| runtime | 否 | 是 | 是 | 是 |
| test | 否 | 是 | 否 | 否 |
| system | 是 | 是 | 否 | 否 |
| import | N/A | N/A | N/A | N/A |
org.apache.commons commons-lang3 3.14.0 jakarta.servlet jakarta.servlet-api 6.0.0 provided org.postgresql postgresql 42.7.1 runtime org.mockito mockito-core 5.8.0 test
3.2.0 5.10.1 2.16.0 org.springframework.boot spring-boot-starter-web ${spring-boot.version}
1.0.0 [1.0.0,) (,1.0.0) [1.0.0,2.0.0] (1.0.0,2.0.0)
LATEST RELEASE
org.springframework.boot spring-boot-dependencies 3.2.0 pom import com.fasterxml.jackson jackson-bom 2.16.0 pom import org.springframework.boot spring-boot-starter-web com.fasterxml.jackson.core jackson-databind
org.springframework.boot spring-boot-dependencies 3.2.0 pom import software.amazon.awssdk bom 2.23.0 pom import org.junit junit-bom 5.10.1 pom import
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat org.springframework.boot spring-boot-starter-jetty
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging org.springframework.boot spring-boot-starter-log4j2
# 完整依赖树 mvn dependency:tree # 按构件过滤 mvn dependency:tree -Dincludes=org.slf4j # 输出到文件 mvn dependency:tree -DoutputFile=deps.txt # 显示详细信息(含冲突解决过程) mvn dependency:tree -Dverbose
# 查找未使用的已声明依赖和已使用但未声明的依赖 mvn dependency:analyze # 仅显示问题项 mvn dependency:analyze-only # 包含 test 作用域 mvn dependency:analyze -DignoreNonCompile=false
# 列出全部依赖 mvn dependency:list # 按作用域筛选(例如仅 runtime) mvn dependency:list -DincludeScope=runtime
Maven 对版本冲突采用“最近定义优先(nearest definition wins)”策略:
A -> B -> C 1.0 A -> C 2.0
结果:使用 C 2.0(距根节点更近)
org.slf4j slf4j-api 2.0.9
org.apache.maven.plugins maven-enforcer-plugin 3.4.1 enforce enforce
com.example parent 1.0.0 pom com.example common ${project.version} com.example parent 1.0.0 module com.example common
central https://repo.maven.apache.org/maven2
company-repo https://nexus.company.com/repository/maven-public true true
company-repo ${env.REPO_USER} ${env.REPO_PASS}
# 启用调试输出 mvn dependency:tree -X # 显示冲突解决详情 mvn dependency:tree -Dverbose=true
# 清空本地仓库缓存 mvn dependency:purge-local-repository # 强制更新远程依赖 mvn -U clean install
# 查看经继承与插值后最终生效的依赖版本 mvn help:effective-pom