文章目录
-
dependency子节点:
- groupId: 项目唯一标识.
- artifactId: 此模块唯一标识。
- version:通过版本来区分,获取需要哪个模块。
- type:默认是jar, 还可以为war, pom。
- scope:作用区域。
- compile:默认值。作用域编译、测试、运行。
- test:作用域测试。
- provided:作用域测试、编译。
- runtime:作用域测试、运行。
- system:作用域系统依赖,通过制定systemPath节点来制定依赖文件的路径,不会从maven仓库中拉取。因此,移植应用的时候,可能导致jar无法找到。
- optional:标记此依赖是否可选。
- exclusions:用来排除传递性依赖。
-
依赖调解:Maven引入了传递性依赖特性,在使用jar的时候,只需要关心直接依赖就可以了,不需要关心,这些依赖的又依赖了哪些依赖,减小了版本重复、冲突的可能性。但是,当版本冲突的时候,maven默认采用最短路径优先;看依赖关系的层级数,层数小者优先;但是当层数一致的时候,就无法确定了。但是在maven2.0.8版本之后,采用了第一声明者优先,谁先定义,则使用谁,前提是使用了路径最短优先之后。
-
可选依赖:设置了
<optional>true</optional>
只会作用在同级中,不会产生依赖传递。eg:A.jar中存在C、D可选依赖,那么B使用A的时候,是无法获取到C、D的依赖的,需要自己声明依赖。 -
maven配置插件的时候,若groupId为:org.apache.maven.plugins;则可以省略groupId。