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的博客后有什么想法,请不要吝啬自己的话,尽情说出来,共同进步提高!
一周排行
  • CVE-911是由Jann Horn发现的一个有关安卓的提权漏洞,该漏洞允许恶意应用从普通应用权限提权到system用户执行命令,漏洞信息与POC见.漏洞的成因源于在安卓系统 0x02 漏洞分析 在Jan ...
  • label的使用 以前只知道使用并没太注意一些细节 话说<label><input type="checkbox"/>5星</label>就可以点文字也能选中I ...
  • 这一章节主要是介绍了tomcat 的一个重要模块 connector,但只是一个缩减版 connector的作用是创建ServerSocket的实例serverSocket,绑定端口,监听端口,当接受到客户端请求时, ...
  • Windows Registry Editor Version 5.00 [hkey_current_user\software\microsoft\windows\currentversion\internet s ...
  • Android 的消息队列模型 Android是参考Windows的消息循环机制来实现Android自身的消息循环的. Android通过Looper.Handler来实现消息循环机制,Android消息循环是针对线 ...
  • 参考:http://www.cnblogs.com/renrenqq/archive/2006/08/04/467688.html 但这个方法还不能解决Session缓存问题,由于创建Session需要消耗大量的内存 ...
  • Ubuntu 12.04下为火狐浏览器安装flash插件 安装了Ubuntu12.04后,我使用火狐浏览器看视频 .结果浏览器提示缺少合适的插件而无法播放.在安装向导中,我选择了adobeflash插件. 然而等了半 ...
  • 原文:Using Plugins and Mixins in Your Sencha Apps 概述 当扩展一个框架类的功能的时候,通常都会直接将新功能写入派生类,然而,如果所需的同一功能存在于多个组件,那最有效的方 ...
  • def pca(dataMat, topNfeat=9999999): #数据矩阵, 输出前topNfeat个feat meanVals = mean(dataMat, axis=0) # 计算平均值 meanRem ...
  • 写在前面 由于JS开发对我来说是全新的技术栈,开发过程中遇到了各种各样的框架.工具,同时也感叹一下相对于.Net的框架(工具框架以及测试框架等)JS框架真的是太丰富了.社区的力量果然强大---也是由此希望本文能概括常 ...