Maven依赖管理文件pom.xml的讲解

上图

Maven依赖管理文件pom.xml的讲解

< dependencies >

dependencies,一看都知道是dependency的复词。所以,没错,所有的依赖都是定义在此标签内。也就是依赖最外围的标签。

< dependency >

dependency, 中文翻译 依赖,每个依赖都有此标签包裹。例如:
Maven依赖管理文件pom.xml的讲解

< groupId> < artifactId> < version>

这三个是不是很眼熟,每次这个就是坐标。我们可以通过这个三个标签定位到所有的maven项目,所以一开始坐标的设定,就是为了依赖管理。

< type >

type,代表依赖的类型,默认为jar。值可以选 jar,war,pom,maven-plugin,ear等。所以,当我们看见项目中声明了type的类型,不要慌。认真分析是jar,还是pom,其实主要涉及一个依赖传递的问题。

< scope >

scope,翻译:范围。也就是我们依赖的使用范围,这个还是有点东西的,下一篇来一个专门的讲解。可取值:compile(编译),test(测试),Provided(提供),runtime(运行),system(系统本地),import(导入)。后面两个不常用,但是越是不常用的知识越显水平,下篇我为大家好好讲解。

< exclusions >

exclusions,翻译:排除。也就是我们在依赖某一个构件的时候,会把此构件依赖的构件传递过来,这时候我们可以选择排除他们。一般用于解决依赖冲突。假如:A依赖B,B依赖C;这时候A又依赖C。我们就可以排除掉B依赖的C。举一个生活中的例子:我买了一个手机,送一个手机壳(贼丑的那种),然后我又买了一个手机壳(贼漂亮),那我就不让商家送我手机壳了,不如给我便宜点价钱,多实在。

< exclusion >

exclusion 是 exclusions 的子标签。这个关系类似于 dependency 与 dependencies的关系。

< optional >

optional,翻译:可选。 true是可选,false 为不选。此可选非彼可选。原因在于思考层面不同。这个应该站在我们为别人提供构件时候需要考虑的,假设我们写了一个软件(同构件),这个软件呢,很灵活,可以实现orcale 和mysql 两种数据库的使用。但是呢,我有不知道用户会使用哪种数据库,于是乎,我们把orcale驱动依赖和mysql驱动依赖设置为 可选,用户就可以根据自己的数据库去导入自己数据库的依赖。岂不美哉!