项目构建之maven篇:4.坐标与依赖及spring依赖注入demo

源代码下载


坐标


  com.demo.animal
  animal-core
  0.0.1-SNAPSHOT
  jar
groupId:定义当前maven项目隶属的实际项目

artifactId:定义实际项目中的一个maven项目(模块),推荐实际项目项目做为artifactId的前缀,如:nexus-indexer

version:maven项目的当前版本号

packaging:maven项目的打包方式


依赖


pom.xml


	4.0.0

	com.demo.animal
	animal-core
	0.0.1-SNAPSHOT
	jar

	animal-core
	http://maven.apache.org

	
		UTF-8
	

	
		
			junit
			junit
			4.10
			test
		

		
			org.springframework
			spring-core
			3.0.7.RELEASE
		
		
			org.springframework
			spring-beans
			3.0.7.RELEASE
		
		
			org.springframework
			spring-context
			3.0.7.RELEASE
		
		
			org.springframework
			spring-test
			3.0.7.RELEASE
		
		
			com.kenai.nbpwr
			javax-inject
			1.0-201002241208
		
	



项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第1张图片


maven通过在dependency元素中设置坐标来使用依赖,参数如下:

groupId,artifactId,version:依赖的基本坐标,最重要

type:依赖类型,对应于项目坐标定义的packaging,大部份情况下,这个不用配置,默认为jar

scope:依赖范围

optional:标记依赖是否可选

exclusions:用来排除传递性依赖


依赖范围


依赖范围就是用来控制与这三种classpath的关系(编译classpath,测试classpath,运行classpath)

依赖范围的种类:

compile:编译领带范围,默认,对于编译,测试,运行三种classpath都有效,如:spring-core

test:测试依赖范围,只对测试classpath有效, 如:junit

provided:已提供依赖范围,对编译与测试classpath有效,如:servlet-api

runtime:运行时范围,对测试与运行有效,如:jdbc驱动

system:系统依赖范围,与provided一样

依赖范围与classpath的有关系

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第2张图片


传递性依赖


项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第3张图片

运行命令可以查看依赖树

dependency:tree

查看结果:


项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第4张图片



项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第5张图片




依赖冲突解决办法


test-a:

源代码下载

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第6张图片


test-b:

源代码下载

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第7张图片


将test-a与test-b,安装到本地仓库,供test-c依赖

test.c

源代码下载

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第8张图片

为什么会是依赖commons-logging-1.1.3.jar?

因为:当第二直接依赖与第三直接依赖都存在时,它是优先选择第二直接依赖(路径短)

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第9张图片



继续

test.d

源代码下载

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第10张图片


将test-d安装到本地仓库。供test-c依赖

test-c

源代码下载

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第11张图片


如果需要使用test-b的commons-logging-1.1.3.jar

可以进行如下配置,在test-d中加入exclusions


			com.demo.test
			test-d
			0.0.1-SNAPSHOT
			
				
					commons-logging
					commons-logging
				
			
		

项目构建之maven篇:4.坐标与依赖及spring依赖注入demo_第12张图片



你可能感兴趣的:(maven,项目构建之ant,&,maven)