dependencies包含一个到多个dependency申明项目依赖。
groupId、artifactId和version:依赖的基本坐标,Maven根据坐标才能找到需要的依赖。
type:依赖的类型,对应于项目坐标定义的packaging。默认jar
scope:依赖的范围。
optional:标记依赖是否可选。
exclusions:用来排除传递的性依赖。
依赖范围scope
Maven在编译项目住代码的时候需要使用一套classpath,在编译和执行测试的时候会使用另一套classpath。
依赖范围就是用来控制依赖与这三种classpath(编译classpath、测试classpath、运行classpath)的关系。Maven几个依赖范围:
compile:编译依赖范围,默认使用该依赖范围。此依赖范围的Maven对编译、测试、运行三种classpath都有效。
test:测试依赖范围,只对测试classpath有效。
provided:已提供的依赖范围。对编译和测试classpath有效,对运行时无效,例如servlet-api。
runtime:运行时依赖范围。对应测试和运行classpath有效,但在编译主代码时无效。例如jdbc驱动。
system:系统依赖范围。参考:http://www.blogjava.net/yxhxj2006/archive/2012/08/23/386148.html
import:导入依赖范围,不会对三种classpath产生实际影响。
传递性依赖
排除依赖
归类依赖
优化依赖
mvn dependency:list查看当前项目已解析依赖。
mvn dependency:tree 查看依赖树
mvn dependency:analyze 分析依赖,Used Undeclared dependencies项目中使用到但未声明的依赖,Unused declared dependencies项目中未使用但显式申明的依赖。