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的博客后有什么想法,请不要吝啬自己的话,尽情说出来,共同进步提高!
一周排行
  • 101 Tips to MySQL Tuning and Optimization by Hovhannes Avoyan | Jul 12, 2011 Tweet 8 MySQL is a powerful ope ...
  • 思路:二维背包   将经验看作价值有动态转移:dp[ i ][ j ]=max(dp[ i ][ j ],dp[ i-r[ k ] ][ j-1 ]+v[ k ])  . v[k]表示杀第k种怪一只所得的经验,将耗去 ...
  • linux下快速安装MariaDB   MariaDB 是 一个采用 Maria 存储引擎的  MySQL  分支版本,是由原来 MySQL 的作者 Michael Widenius 创办的公司所开发 的免费开源的数 ...
  • 乘积最大 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 421            测试通过 : 206  输出所求得的最 ...
  • 最近接到一个任务,就是模拟某个贴吧的登录发帖功能,我的思路是通过IE浏览器的工具对登陆操作进行抓包,记录登录时候请求的URL,请求方式,请求正文等信息进行模拟的发包. 1.首先我们要到登陆页面,以摇篮网为例子,用IE ...
  • 最近在为公司编写c#编码规范,以前对这方面研究不多,只是觉得代码能够出自己的意思就可以了. 我参考了以下资料 C# Coding Conventions NET设计规范约定惯用法与模式(第2版) 编写可读性代码的艺术 ...
  • $.extend($.fn.validatebox.defaults.rules, { intOrFloat: {// 验证整数或小数 validator: function (value) { return /^\ ...
  • 简单模拟,有人用dfs写的,貌似更高端,由于测试数据不是很大,效率也不低,时间大概是几毫秒吧,在学校的virtual judge上居然是0毫秒,好亮.... (用了面向对象,或许也不能称之为面向对象.....) #i ...
  • /*************************************************************************            Global Variables for E ...
  • 信息提供: 安全公告(或线索)提供热线:[email protected] 漏洞类别: 非法URL模式绕过漏洞 攻击类型: 远程攻击 发布日期: 0 更新日期: 6 受影 ...