Maven dependency 详解
- groupId、artifactId和version:基本坐标
- type:依赖的类型,对应项目坐标定义的packaging
- scope依赖的范围
- optional标记依赖是否可选(不推荐)
- exclusions,用来排除传递性依赖
依赖范围
- compile 编译依赖范围,默认使用该范围,对于编译、测试、运行三宗classpath都有效。
- test 测试依赖范围,只对测试classpath有效
- provided 已体提供依赖范围。对于编译和测试classpath有效,运行时无效
- runtime 运行时依赖范围。对于测试和运行的claspath有效,编译无效
- system 系统依赖范围。和provided依赖范围完全一致。使用system范围的依赖,不许通过systemPath元素显示地制定依赖文件的路径。
- import 导入依赖范围。不会对三种classpath产生实际的影响。
传递性依赖
依赖调解
- 路径最近者优先
- 路径长度一致,POM中依赖声明的顺序靠前的被使用。
可选依赖,不会被传递
排除依赖 exclusions
坐标
归类依赖
<springframework.version>2.5.6</springframework.version>
使用: ${springframework.version}
优化依赖
- mvn dependency:list 列出当前已解析依赖
- mvn dependency:tree 列出依赖树
- mvn dependency:analyze 分析当前项目的依赖