maven依赖总结
Posted 吴冬冬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven依赖总结相关的知识,希望对你有一定的参考价值。
1.依赖元素
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>$springframework.version</version>
<type>jar</type>
<scope>compile</scope>
</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.排除依赖
发现依赖包里有些包不稳定,可以排除依赖,显式的申明文档的包
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.1</version>
<exclusions>
<exclusion>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
7.分类依赖
当同一个模块,所依赖的几个模块版本都相同时,可以使用maven里的属性做分类依赖,依赖版本升级时改一处即可
<properties>
<springframework.version>2.5.6</springframework.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>$springframework.version</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>$springframework.version</version>
<type>pom</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>$springframework.version</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>$springframework.version</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
8.优化依赖
可概括为三个命令
mvn dependency:list
表示依赖列表,maven eclipse插件已经实现,有图形化显示,在pom.xml的dependencies页
mvn dependency:tree
表示依赖列表,maven eclipse插件已经实现,有图形化显示,在pom.xml的dependency hierarchy页
mvn dependency:analyze
查找出在编译和测试中未使用但显示声明的依赖
以上是关于maven依赖总结的主要内容,如果未能解决你的问题,请参考以下文章