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的博客后有什么想法,请不要吝啬自己的话,尽情说出来,共同进步提高!
一周排行
  • 快速的页面加载对提升搜索引擎排名.网站转化率和整体的用户体验是非常重要的.网站页面的加载速度也是衡量网站性能的一个重要因素. 如果网站不是以最好的性能在运行,迟缓的加载会让你在低的排名和搜索流量上花费更大的代价.页面 ...
  • See wiki website pages. http://zh.wikipedia.org/wiki/Java_%E6%B3%A8%E8%A7%A3
  • 昨天群里没一同鞋遇到了以蛋疼的bug,且听我细细道来. 1.编译环境 :  maven 2.问题现象: drawbable下面一张png,在2.x机器下一直报filenotfound是神马情况(E/AndroidRu ...
  • 本周苹果公司在旧金山召开新品发布会,发布新款iPad Air和iPad Mini之余,还宣布了iLife和iWork两套软件将免费供用户下载使用.这两套软件颇为实用,比如 iWork等同于微软系统中的Office 软 ...
  • 本文转载自http://www.sapub.net/Apache,感谢作者分享! Web服务器下设置变灰的方法比较简单,总结如下: 1.安装mod_ext_filter模块(此模块用来在所有的输出页面插入你想要的内容 ...
  • 今天使用 Windows Update 进行软件升级,发现搜索到的可用更新是8月份的 SQL Server 2008 联机丛书.而实际上最新的可用更新是 Microsoft SQL Server 2008 联机丛书( ...
  • [email protected]   例如以下代码:unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphi ...
  • Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供对数据进行简单处理,并写到各种数据接受 ...
  • ffdshow神奇的功能:视频播放时显示运动矢量和QP FFDShow可以称得上是全能的解码.编码器.最初FFDShow只是mpeg视频解码器,不过现在他能做到的远不止于此.它能够解码的视频格式已经远远超出了mpeg ...
  • zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<The Chubby lock service for lo ...