1.依赖配置

<project>
...
<dependencies>
<dependency>
<groupId>xx</groupId>
<artifactId>com.yy.xx</artifactId>
<version>..</version>
<type>..</type>
<scope>...</scope>
<option></option>
<exclusions>
<exclusion>
....
</exclusion>
</exclusions>
</dependency>
</dependencies> </project>

说明:
groupId,artifactId,version :依赖的基本坐标
type:依赖的类型,默认为jar
scope:依赖的范围
option: 标记依赖是否可选
exclusions:排除传递性依赖

2.依赖范围

<dependencies>
<dependency>
<groupId>xx</groupId>
<artifactId>com.test.xx</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

1》comile:编译时依赖
2》test:测试时依赖
3》provided:已提供依赖范围,编译、测试生效,运行时不生效(例如servlet-api在tomcat中已经自带了,因此运行时不需要重复依赖)
4》runtime:运行时依赖,仅对测试、运行生效,编译不生效。
5》system:直接指定依赖的文件路径,和provided范围相同

<dependencies>
<dependency>
<groupId>xx</groupId>
<artifactId>com.test.xx</artifactId>
<scope>system</scope>
<systempath>${java.home}/lib/xx.jar</systempath>
</dependency>
</dependencies>

6>import:导入依赖范围

3.传达性依赖(间接依赖)

A-->B-->C  A依赖B,B又依赖C,那么A会通过B将C也会依赖过去。

传递依赖的范围取决于第一依赖的范围和第二依赖的范围(左边是第一依赖范围,上面是第二依赖范围,交叉部分为传递依赖范围)

4.依赖调解

1》A->B->E->C1.0,  A->D->C2.0   : 此时A会依赖C1还是C2 ?

---依赖原则1:路径最近者优先

2》A->B->Y1.0, A->C->Y2.0   : 此时A会依赖Y1还是Y2  ?

---依赖原则2:第一声明优先

5.可选依赖

A->B, B->X(可选), B->Y(可选)

如果3者依赖范围都是compile,则X,Y都是A的compile的依赖范围,但是由于X/Y都是可选依赖,所以X,Y不会被传递

6.排除依赖

exlusions可通过*排除所有依赖,也可以排除一个,或者多个。

<dependencies>
<!--排除所有传递依赖-->
<dependency>
<groupId>xx</groupId>
<artifactId>com.yy.xx</artifactId>
<version>..</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--排除一个或者 多个传递依赖-->
<dependency>
<groupId>xx</groupId>
<artifactId>com.yy.xx</artifactId>
<version>..</version>
<exclusions>
<exclusion>
<groupId>x1</groupId>
<artifactId>com.xx.x1</artifactId>
</exclusion>
<exclusion>
<groupId>xn</groupId>
<artifactId>com.xx.xn</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

7.依赖优化

mvn dependency:list   查看依赖列表

mvn dependency:tree >a.txt   查看依赖树,生成a.txt

mvn dependency:analyze

依赖分析:展示结果有两部分

1>Used undeclared dependencies : 表示项目中使用到了,但是没有显示声明的依赖

2>Unused declared dependecies :  表示项目中未使用到,但是显示声明了的依赖,不能简单直接删除需要分析一下scope

dependency:analyze只能分析编译、和测试范围的依赖。

Maven学习篇一:依赖了解的更多相关文章

  1. maven学习笔记三(依赖特性,作用域)

    上一章中  我们看到了添加了个junit的依赖包.那么maven中想添加依赖的jar包我们只需要配置相应的dependency就行.例如: <dependency> <groupId ...

  2. maven学习记录二——依赖管理

    5       依赖管理 Jar包的管理 需求:整合struts2   页面上传一个客户id 跳转页面 5.1     添加依赖: 打开maven仓库的视图: 5.2     重建索引 1.  创建m ...

  3. Maven学习篇一:eclipse构建运行maven web项目

    1.new->other->maven project->next 2.选择创建简单项目(或者直接去掉勾,在后面选择maven-archetype-webapp) 3.设置坐标,名称 ...

  4. Maven提高篇系列之(五)——处理依赖冲突

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  5. Maven学习笔记—坐标和依赖

    Maven的坐标和依赖 1 Maven坐标 1.1 什么是Maven坐标 Maven坐标:世界上任何一组构件都可以使用Maven坐标来唯一标识,Maven坐标的元素包括groupId.artifact ...

  6. maven 学习---Maven外部依赖

    现在,你也知道Maven做依赖管理使用Maven仓库的概念.但是,如果依赖是不提供任何远程存储库和中央存储库发生了什么? Maven提供为使用外部依赖的概念,应用在这样的场景. 举一个例子,让我们做以 ...

  7. Maven学习-目录结构

    在前一篇文章中,我们介绍了什么是Maven,以及如何用Maven来构建我们的项目.不了解Maven的童鞋,可以看这里Maven学习-入门.在这篇文章中,我们将学习Maven的项目的目录结构相关的内容. ...

  8. Maven提高篇系列之(三)——使用自己的Repository(Nexus)

    这是一个Maven提高篇的系列,包含有以下文章: Maven提高篇系列之(一)——多模块 vs 继承 Maven提高篇系列之(二)——配置Plugin到某个Phase(以Selenium集成测试为例) ...

  9. Maven学习(三) -- 仓库

    标签(空格分隔): 学习笔记 坐标和依赖时任何一个构件在Maven世界中的逻辑表示方式:而构件的物理表示方式是文件,Maven通过仓库来同意管理这些文件. 任何一个构件都有其唯一的坐标,根据这个坐标可 ...

随机推荐

  1. Linux常用的命令(3)

    1 文件的内容显示 cat 显示全部 more: 分屏幕显示,只能向后翻 less: 分屏幕显示,可以向上翻 head:查看前n行 默认10行 tail:查看后n行 -n -f: 查看文件尾部,不退出 ...

  2. nRF51822外设应用[2]:GPIOTE的应用-按键检测

    版权声明:本文为博主原创文章,转载请注明作者和出处.    作者:强光手电[艾克姆科技-无线事业部] 1. nRF51822寄存器类型 nRF51822的寄存器和一般的单片机有所差别,nRF51822 ...

  3. chmod变更文件或目录的权限

    chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目录的权限, ...

  4. javascript的代码块

    a block of code 注意到这个问题是在看书的时候,中文版中出现“代码片段”这样的词语,于是就去翻看了英文版的原书.书中的用了a block of code,难道不应该翻译成代码块吗?(作为 ...

  5. Qt 学习之路 2(73):Qt 线程相关类

    Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类  豆子  2013年11月26日  Qt 学习之路 2  7条评论 希 ...

  6. Hibernate 环境配置和依赖添加(使用java web和普通javaSE工程)

    1.Hibernate依赖包的添加 File---->Project Structure,按照如图所示操作,导入所依赖的jar包. 2.生成hibernate.hbm.xml的配置文件 (1)点 ...

  7. Luogu P1282 多米诺骨牌 DP。。背包?

    背包...差不多..QWQ 设f[i]为达到差值为i的状态需要多少次,那就很显然了: 注意区分正负不同的代价的循环方向 技巧:如果不想改负数的话,那可以移动一下数组下标,用一个新的指针指向原来的数组 ...

  8. D. Magic Gems(矩阵快速幂 || 无敌杜教)

    https://codeforces.com/contest/1117/problem/D 题解:有一些魔法宝石,魔法宝石可以分成m个普通宝石,每个宝石(包括魔法宝石)占用1个空间,让你求占用n个空间 ...

  9. js关于原型,原型链的面试题

    之前面试的时候遇到过原型和原型链方面的题目,具体的已经忘了,只记得当时回答的稀里糊涂,今天查了一些资料,把自己所理解的写出来,加深记忆. 1,前提 在js中,对象都有__proto__属性,一般这个是 ...

  10. 隐藏入口文件的apache配置

    AllowOverride None->AllowOverride All #LoadModule rewrite_module modules/mod_rewrite.so->LoadM ...