Maven

1、Maven中scope - 依赖范围:


	
		
			junit
			junit
			4.12
			test
		
	
依赖范围与classpath关系
依赖范围/scope 编译classpath 测试classpath 运行classpath 例子
compile(未声明默认值) Y Y Y spring-core
test - Y - Junit
provided Y Y - servlet-api
runtime - Y Y JDBC驱动实现
system Y Y - 本地、Maven仓库之外的类库

2、依赖调解 - Dependency Mediation

第一原则:路径最近者优先;

第二原则:第一声明者优先;

3、可选依赖 - true


	mysql
	mysql-connector-java
	5.1.39
	true


	postgresql
	postgresql
	9.1-901-1.jdbc4
	true

只会对当前项目产生影响,当其他项目依赖于该项目时,这两个依赖不会被传递;如果其他项目依赖于该项目,实际使用MySQL数据库,就需要显式地声明mysql-connector-java这个依赖;

基于面向对象设计中的单一职责性原则,在规划Maven项目时也适用;

更好的做法:为两种不同数据库分别创建一个maven项目,基于同样的groupId分配不同的artifactId,在各自pom文件中声明对应的JDBC驱动依赖,而且不使用可选依赖,用户根据实际需求选择使用哪一个项目;由于传递性依赖的作用,就不需要再显式地声明JDBC的驱动了;

4、排除依赖


	
	
	
	
		
			
			
		
	

exclusions可以包含一个或多个exclusion子元素;

声明exclusion只需要groupId和artifactId,而不需要version元素;

5、归类依赖

 

你可能感兴趣的:(Java)