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的博客后有什么想法,请不要吝啬自己的话,尽情说出来,共同进步提高!
一周排行
  • 1.安装/卸载:adb 2.版本查看:aapt aapt dump badging FeiYoung_android_V2.1.1.2264.apk(查看APK版本号.包名.固件版本号) 3.反编译:dexdump ...
  • 系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式——建造者模式 [ ...
  • 文/图 海啸天鸣(Ansty)[华南农业大学 李海鸣] 最近学校各个社团组织搞了很多投票活动,用到了网络投票,于是乎,我的一些朋友就找上了我,叫我去帮他们刷票,于是就有了本文.现在活动也搞完了,部分组织的投票系统也公 ...
  • 开源本身就是一种释放源代码,共享的精神.所以在这种精神指导下,做开源的,大部分是个人或者社团组织的形式.随着开源越来越被大家所认可,有些公司也在开始介入开源这块.介入的方式有很多种 比如google对mozilla支 ...
  • SharePoint开发网站结构树视图 1. 新建可视WebPart项目. 2. 插入Treeview 3. 查看代码,输入以下代码片: 4. 部署解决方案,插入Web部件到页面,效果图:
  • DML DDL DML命令的区别 (4 6) ▼ 标签: ddl dml dcl it 分类: 数据库 DML是数据操作语言,但DDL是定义语言,DDL不能rollback SQL(S ...
  • 易网科技讯 3月2日消息,据国外媒体报道,谷歌今日推出航班预订系统,与Kayak.Travelocity和Orbitz等在线航班预订展开竞争.2010年,谷歌曾以7亿美元收购航班信息供应商ITA Software.当 ...
  • Apache防DDOS模块mod_evasive的安装配置和使用 前些天,朋友的网站访问很慢,查服务器的连接数也不多,资源占用也少.怀疑有攻击,便想装上mod_evasive试试,试后一切正常,很爽 安装配置如下 w ...
  • 在云计算的三种模型中(IaaS,PaaS,SaaS),集成的特色功能.复杂性与开放性(可增强性)以及安全等方面各有不同,总体来说云服务提供商所在的等级越低(IaaS 最低,SaaS 最高) ,云服务用户自己所要承担的 ...
  • 第五章,文件系统: 从外部来看,文件系统是一组文件和目录. 在内部看,文件系统却迥然不同.文件系统的设计者必须考虑到存储区如何分配以及系统如何记录文件使用了哪些块.不同的文件系统具有不同的目录结构.文件系统的可靠性和 ...