maven依赖总结

原创 2013年01月11日 15:13:35

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自身处理,只要理解下即可

第一列为第一依赖,第二列为第二依赖,单元格为传递范围

 compiletestprovidedruntime
compilecompile__runtime
testtest__test
providedprovided_providedprovided
runtimeruntime__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

查找出在编译和测试中未使用但显示声明的依赖

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lastsweetop/article/details/8493475

项目管理利器—maven(Maven视频教程)

Maven是一个项目管理和整合的工具。Maven为开发者提供了一套完整的构建生命周期框架。开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使用了一个标准的目录结构和一个默认的构建生命周期。在创建报告、检查、构建和测试自动配置时,Maven可以让开发者的工作变得更简单。
  • 2017年11月26日 22:15

Maven类包冲突终极三大解决技巧 mvn dependency:tree

举例 A依赖于B及C,而B又依赖于X、Y,而C依赖于X、M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过等若干种方式控制传递依赖)。 这里有一个需要特别注意...
  • sun_wangdong
  • sun_wangdong
  • 2016-07-07 16:14:29
  • 7388

maven-eclipse

14.1. 简介 Eclipse IDE是目前Java开发人群中使用得最广泛的IDE。Eclipse有一大堆的插件(请看http://www.eclipseplugincentral.com/),无数...
  • zj7758
  • zj7758
  • 2011-05-17 15:31:00
  • 1604

Maven Pom 文件中的隐式依赖导致Jar冲突

Maven项目的pom文件中的显示声明的依赖jar,会隐式依赖一些别的第三方jar,这些隐式的jar有可能会与其它的隐式依赖的jar或显示声明的jar冲突,造成一些功能不能正常执行。这时,我们可以通过...
  • majian_1987
  • majian_1987
  • 2015-04-27 23:03:47
  • 18152

Maven入门(in Eclipse IDE)

NetBeans版本的传送门:http://tieba.baidu.com/p/2835875340 准备事宜: eclipse或者myeclipse一个,需要安装maven插件 如果不安装mave...
  • qq_27376871
  • qq_27376871
  • 2016-06-08 18:33:55
  • 7353

关于maven的依赖分析

能力有限,不喜勿喷
  • psy1100
  • psy1100
  • 2016-04-20 14:06:03
  • 2516

maven详解之坐标与依赖

maven坐标和依赖详解, maven依赖的调优技术 maven依赖配置的最佳实践 maven配置的常见问题的解决方案...
  • wanghantong
  • wanghantong
  • 2014-08-06 22:50:15
  • 18861

利用maven工具解决jar包冲突问题或重复加载问题

在使用maven开发项目的过程中,经常会遇到jar包重复加载或者jar包冲突的问题的,但是由于有些jar是由于maven的依赖加载自动加载进来的, 而不是开发者自己配置的,特别是当项目中pom中配置的...
  • w1014074794
  • w1014074794
  • 2016-07-12 21:40:43
  • 20100

Apache Maven项目提供的Dependency插件详解

Dependency插件可以操作Maven构件(artifact),如复制并解压缩本地或远程Maven库中的构件到某个指定路径。Dependency插件的最新版本是2015.1.24发布的2.10。 ...
  • taiyangdao
  • taiyangdao
  • 2016-11-07 22:28:22
  • 2014

关于maven pom.xml中dependency type 为pom的应用

dependency为什么会有type为pom,默认的值是什么? dependency中type默认为jar即引入一个特定的jar包。那么为什么还会有type为pom呢?当我们需要引入很多jar包...
  • yao123long
  • yao123long
  • 2015-11-19 11:55:48
  • 9878
收藏助手
不良信息举报
您举报文章:maven依赖总结
举报原因:
原因补充:

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