maven依赖总结

转载地址:

http://blog.csdn.net/lastsweetop/article/details/8493475

maven 分类依赖 排除依赖 优化依赖

目录(?)[-]

  1. 依赖元素

  2. 依赖范围

  3. 传递性依赖

  4. 依赖调解

  5. 可选依赖

  6. 排除依赖

  7. 分类依赖

  8. 优化依赖

    1. mvn dependencylist

    2. mvn dependencytree

    3. mvn dependencyanalyze

1.依赖元素

[html] view plaincopy

  1. <dependency>

  2. <groupId>org.springframework</groupId>

  3. <artifactId>spring-core</artifactId>

  4. <version>${springframework.version}</version>

  5. <type>jar</type>

  6. <scope>compile</scope>

  7. </dependency>

groupId,必选,实际隶属项目

artifactId,必选,其中的模块

version必选,版本号

type可选,依赖类型,默认jar

scope可选,依赖范围,默认compile

optional可选,标记依赖是否可选,默认false

exclusion可选,排除传递依赖性,默认空

2.依赖范围

maven项目又三种classpath(编译,测试,运行)

scope用来表示与classpath的关系,总共有五种

compile:编译,测试,运行

test:测试

provided:编译,测试

runtime:运行

system:编译,测试,同provided,但必须指定systemPath,慎用

3.传递性依赖

顾名思义,你懂的,但是传递的范围会发生改变,这个由maven自身处理,只要理解下即可

第一列为第一依赖,第二列为第二依赖,单元格为传递范围

compile test provided runtime
compile compile _ _ runtime
test test _ _ test
provided provided _ provided provided
runtime runtime _ _ runtime

4.依赖调解

传递路径长度取最短原则,传递路径长度相等时,采取最先申明原则

5.可选依赖

尽量少用,可选依赖不会被传递,需要显式申明

6.排除依赖

发现依赖包里有些包不稳定,可以排除依赖,显式的申明文档的包

[html] view plaincopy

  1. <dependency>

  2. <groupId>javax.mail</groupId>

  3. <artifactId>mail</artifactId>

  4. <version>1.4.1</version>

  5. <exclusions>

  6. <exclusion>

  7. <groupId>javax.activation</groupId>

  8. <artifactId>activation</artifactId>

  9. </exclusion>

  10. </exclusions>

  11. </dependency>

  12. <dependency>

  13. <groupId>javax.activation</groupId>

  14. <artifactId>activation</artifactId>

  15. <version>1.1</version>

  16. </dependency>

7.分类依赖

当同一个模块,所依赖的几个模块版本都相同时,可以使用maven里的属性做分类依赖,依赖版本升级时改一处即可

[html] view plaincopy

  1. <properties>

  2. <springframework.version>2.5.6</springframework.version>

  3. </properties>

  4. <dependencies>

  5. <dependency>

  6. <groupId>org.springframework</groupId>

  7. <artifactId>spring-core</artifactId>

  8. <version>${springframework.version}</version>

  9. <type>jar</type>

  10. <scope>compile</scope>

  11. </dependency>

  12. <dependency>

  13. <groupId>org.springframework</groupId>

  14. <artifactId>spring-beans</artifactId>

  15. <version>${springframework.version}</version>

  16. <type>pom</type>

  17. <scope>compile</scope>

  18. </dependency>

  19. <dependency>

  20. <groupId>org.springframework</groupId>

  21. <artifactId>spring-context</artifactId>

  22. <version>${springframework.version}</version>

  23. <type>jar</type>

  24. <scope>compile</scope>

  25. </dependency>

  26. <dependency>

  27. <groupId>org.springframework</groupId>

  28. <artifactId>spring-context-support</artifactId>

  29. <version>${springframework.version}</version>

  30. <type>jar</type>

  31. <scope>compile</scope>

  32. </dependency>

  33. </dependencies>

8.优化依赖

可概括为三个命令

mvn dependency:list

表示依赖列表,maven eclipse插件已经实现,有图形化显示,在pom.xml的dependencies页




    		    maven依赖总结

mvn dependency:tree

表示依赖列表,maven eclipse插件已经实现,有图形化显示,在pom.xml的dependency hierarchy页




    		    maven依赖总结

mvn dependency:analyze

查找出在编译和测试中未使用但显示声明的依赖




    		    maven依赖总结

更多相关文章
  • 早在去年12月中旬,微软就公布数据称全球Windows 10预览版用户数量已经超过150万,起初还有分析人士对这一数据表示怀疑,认为是微软在虚张声势,以挽回Windows 8失败的颜面. 不过,最新数据显示,用户对于Windows 10的期望和热情的确令人惊讶. 分析机构Net Applicatio ...
  • oracle导入dmp文件命令   1.首先进入cmd命令窗口 2.执行命令:imp [email protected] file=d:\nc60.dmp full=y  解释 用户名:就是你的目标用户 . www.2cto.com   密码:就是你的目标用户登录密码. orcl:是实例名称 就是 ...
  • 大家应该都知道Zabbix的图是可以通过接口获取出来的,例如CPU性能图 把这图拖到新窗口可以看到这张图的地址:http://xxxxx.xxxx.com/chart2.php?graphid=78730&period=3600&stime=20160729160437&up ...
  • 前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,这个在.NET,Java和JS中都有函数,很可惜在SQL SERVER中没有,我们只能自己来写这么一个函数. 首先来分析一下怎么写这个函数,以之前合并的字符串为例,“张三,李四,王五,钱六,赵七,Tom ...
  • 在平时运维工作中有时候需要根据不同的远程节点或者针对不同的IP的系统做不同的配置部署.如,Ansible可以根据不同的IP地址来对各个节点上的配置文件做不同的处理,这里就需要用到变量. 可以在playbooks文件中直接定义变量: - hosts: webservers vars: http_por ...
  • 首先,欢迎你来到pyer的博客,希望你能有所收获! 然后,pyer之前学C#(原博客地址:初行-博客园),后来转的Python,目前从事服务端研发工作. 最后,相逢便是缘,如果看过pyer的博客后有什么想法,请不要吝啬自己的话,尽情说出来,共同进步提高!
一周排行
  • 流程,EPR无法回避的问题 在讨论ERP的“死穴”前,必须首先理清几个问题. 首先,任何一种ERP软件都有其适用范围.至少到目前为止,还没有一个软件可以成为放之四海而皆准的通用软件.即使,某些声称自己是通用软件的公司 ...
  • 一   概念 Objective-C 中的键(key)-值(value)观察(Observer)  简称kvo 基本思想:一个目标对象管理所有依赖于它的观察者对象,并在它自身的状态改变时主动通知观察者对象.这个主动通 ...
  • 上一篇:http://www.cnblogs.com/luobenCode/p/4504910.html 打包之前要准备一下 请看这篇http://www.cnblogs.com/seanlv/archive/201 ...
  • //*******************************************************************使用mm和mmm的方法:1.进入android源码根目录:cd your-an ...
  • 同方股份(600100)公告,公司拟以不超过1.44亿元增持嘉融投资有限公司20%股权,同时分别出资5万元增资北京同方凌讯科技有限公司和北京同方吉兆科技有限公司.
  • 如果你在本地既需要建立一个www.mkaifa.com单独的虚拟主机,又需要建立*.mkaifa.com的泛域名解析,并且www.mkaifa.com与*.mkaifa.com是不同目录的话,其先后顺序是先建立www ...
  • [ 声明:版权所有,欢迎转载. 联系信箱:[email protected]] 自之前写的两篇关于"数据结构与算法"的博文发表以后,就有两个博友发私信给我探讨我的这个分类,有博友说数据 ...
  • 在NetAdvantage 中那些控件都有客户端对象模型,对于UltraWebGrid等都是很容易就找到的,对于WebCombo不太好找,现在贴出来,可供参考,如果要对WebCombo中下拉的Grid进行客户端控制的 ...
  • IPv6的邻居发现技术摘要 分析了邻居发现协议主机使用的数据结构和数据包的发送算法,阐述了邻居发现协议的功能,最后将邻居发现协议与ARP进行了比较. 1.引言 随着IP网络规模和业务的迅速发展,IP网络的用户数急剧增 ...
  • 操作系统(七) 忘记了...