Maven依赖

原创 2016年05月31日 01:26:49
1、依赖有哪些配置?
  • 示例:
<dependency>
<groupId>com.icegreen</groupId>
<!-- GreenMail是开源的邮件服务测试套件 -->
<artifactId>greenmail</artifactId>
<version>1.3.1b</version>
<type>jar</type>
<scope>test</scope>
<optional>true</optional>
<exclusions>
<exclusion></exclusion>
</exclusions>
</dependency>
  • 配置元素解释
groupId、artifactId、version:依赖的基本坐标,每个都有。
type:依赖的类型,对应于项目坐标定义packaging,大部分情况下该元素不必声明,其默认值jar
scope:依赖的范围
optional:标记依赖是否可选,可选依赖
exclusions:用来排除传递性依赖

2、依赖范围的解释?
不同的运行周期需要不同的jar包,依赖不同的文件,为了更有效的使用构建。
依赖范围用来控制依赖与这三种classpath(编译classpath,测试classpath,运行classpath)的关系。
Maven有以下几种依赖范围:
  • compile:编译依赖范围,默认值。
  • test: 测试依赖范围。
  • provided: 已提供依赖范围。使使用此依赖范围的Maven依赖,对于编译和测试classpath有效,但在运行时无效。典型的例子就是servlet-api,编译和测试的时候需要,但在运行项目的时候不需要,由于容器已经提供,就不需要冲入的引入了。
  • runtime:运行时依赖范围。对于测试和运行classpath有效,但在编译主代码时无效。如JDBC驱动实现,项目主代码的编译只需要JDK提供的JDBC接口,只有在测试和运行的时候才需要实现JDBC接口的具体实现。
  • system:系统依赖范围。同provided一样,不常用
  • import:导入依赖范围。不会对三种classpath有影响,不常用

3、传递性依赖?什么意思,有哪些特性
A构建(jar)依赖B【第一依赖】,B依赖C【第二依赖】。如果都是默认的compile依赖范围,那么C就是A的一个传递性依赖。
传递性依赖Maven是会自动引入到项目中的。
对比其规律

4、依赖调解,调解肯定是传递性依赖产生冲突了,Maven有哪些原则来解决这些问题。
  • 路径最近者优先(依赖层数最少者优先)
  • 最先声明者优先(传递性依赖中,路径/层数一样,同一个版本最先声明者优先)

5、可选依赖,可选存在于多个特性仅能保存其一的情况,一般情况下不建议这样使用。
项目排除的,例如数据库驱动
<optional>true</optional>

6、Maven依赖技巧:
排除依赖:exclusions
可以包括多个<exclusion></exclusion>
排除的时候,exclusion仅需要groupId和artifactId,不需要version

归类依赖:同一版本,定义一个变量
定义一些全局变量,用<properties></properties>,示例:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
引入全局变量
<dependency>
<encoding>${project.build.sourceEncoding}</encoding>
</dependency>

优化依赖:同优化代码一样,去除多余的依赖,显式的声明某些必要的依赖,工具分析的使用命令。
mvn dependency:list --查看当前项目已解析依赖

mvn dependency:tree --查看已解析的依赖树

mvn dependency:analyze --分析依赖前缀的问题,如下指出 了项目未使用,但是显式声明的依赖

版权声明:本文为博主原创文章,未经博主允许不得转载。

grails3.2.8的maven依赖

  • 2017年04月20日 19:50
  • 915KB
  • 下载

Maven POM文件、多模块以及依赖关系

一、POM.XML 1、ProjectObject Model:项目对象模型 2、基本项: project:pom.xml的顶级元素。groupId:指出创建这个工程的组织或团队的唯一标识。plug...

SSM常用Maven依赖

  • 2017年05月10日 17:10
  • 6KB
  • 下载

libphonenumber-5.8.jar maven依赖

  • 2015年07月16日 11:50
  • 264KB
  • 下载

maven如何引入依赖的时候去除其中某个jar包?

maven如何引入依赖的时候去除其中某个jar包? 转自:http://www.cnblogs.com/apache-x/p/5674028.html maven项目,去除jar包中的不想...

springboot maven 依赖包4

  • 2015年10月20日 15:06
  • 40.98MB
  • 下载

activiti开发项目maven依赖POM文件

  • 2015年12月01日 08:48
  • 2KB
  • 下载

利用MAVEN打包可运行jar包,包括依赖的第三方包

目标:应用本身打成一个jar包,依赖的第三方包放到lib目录下   开发环境 OS: Windows 8.1 JDK: 1.7.0 开发工具: IntelliJ IDEA...

maven依赖关系

  • 2015年08月08日 14:30
  • 35KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Maven依赖
举报原因:
原因补充:

(最多只允许输入30个字)