maven依赖管理(依赖详解) 依赖不仅仅是坐标!

学而不思则罔,思而不学则殆

文章目录

  • 依赖详解
  • 位置
    • < dependencies >
    • < dependency >
    • < groupId> < artifactId> < version>
    • < type >
    • < scope >
    • < exclusions >
    • < exclusion >
    • < optional >

依赖详解

首先,我们要搞清楚什么是依赖。依赖就是我们在编码的时候需要使用别人提供的API所导入的jar包。可能有些萌新还没有到导入别人的jar包的地步,但是可以考虑一件事情,Math,String,ArrayList,HashMap等这些函数为什么可以直接使用呢?这就是因为JDK 为我们提供了一些基础的jar包。
maven依赖管理(依赖详解) 依赖不仅仅是坐标!_第1张图片
但是,你满足吗?我是不满足,我还要使用Spring,Mybatis,怎么办呢?就必须要去找第三方公司或组织为我们提供的jar。一个一个去找,岂不是很麻烦。于是乎maven解决了这种问题。通过配置坐标就可以下载所对应的依赖,岂不美哉。

位置

我只需要在创建好的maven项目中 ,找到pom.xm。在此添加即可。
maven依赖管理(依赖详解) 依赖不仅仅是坐标!_第2张图片
maven依赖管理(依赖详解) 依赖不仅仅是坐标!_第3张图片
通过上图,我们可以清晰的知道,groupId、artifactId、version,就能定位一个依赖。没错,这是这三个标签确实可以定位一个依赖,但是却无法对依赖进行更多的操作,例如:依赖的类型,依赖的范围,排除传递性依赖,是否可选。所以我们根据特殊情况还需要使用到 type、scope、exclusion、optional 。下面就一一讲解每个标签的作用。

< dependencies >

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

< dependency >

dependency, 中文翻译 依赖,每个依赖都有此标签包裹。例如:
maven依赖管理(依赖详解) 依赖不仅仅是坐标!_第4张图片

< 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驱动依赖设置为 可选,用户就可以根据自己的数据库去导入自己数据库的依赖。岂不美哉!

你可能感兴趣的:(maven)