Maven

1、Maven中scope - 依赖范围:

<project>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
依赖范围与classpath关系
依赖范围/scope编译classpath测试classpath运行classpath例子
compile(未声明默认值)YYYspring-core
test-Y-Junit
providedYY-servlet-api
runtime-YYJDBC驱动实现
systemYY-本地、Maven仓库之外的类库

2、依赖调解 - Dependency Mediation

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

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

3、可选依赖 - <optional>true</optional>

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.39</version>
	<optional>true</optional>
</dependency>
<dependency>
	<groupId>postgresql</groupId>
	<artifactId>postgresql</artifactId>
	<version>9.1-901-1.jdbc4</version>
	<optional>true</optional>
</dependency>

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

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

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

4、排除依赖

<dependency>
	<groupId></groupId>
	<artifactId></artifactId>
	<version></version>
	<exclusions>
		<exclusion>
			<groupId></groupId>
			<artifactId></artifactId>
		</exclusion>
	</exclusions>
</dependency>

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

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

5、归类依赖

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值