依赖
依赖的查询:
1.所有的依赖都是通过坐标来存储的(GAV)
2.有一些网上的仓库提供了坐标的查询(mvnrepository.com)
3.通过<dependencies>设置依赖
例子:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
首先在本地仓库查询,没有再去中央仓库查询
依赖的传递性
1.依赖会传递
2.依赖的范围<scope></scope>,默认是complie
对于依赖的传递,主要针对complie作用域传递
3.依赖冲突问题
如果有重复的传递依赖,哪一个先写用哪一个
如果路径长短不一致就选择最小路径(可以用排除不想用的依赖)
如果想精确的控制依赖包,可以用依赖的排除功能exclusions
依赖的范围
test只在测试时有用,编译和打包时不用
complie编译有效,编译和打包时都会存储
protected,在编译和测试时有效,在打包时不用,例如sevlet.api
runtime在运行时依赖编译时不依赖
依赖的聚合问题
在一个地方编译所有的pom
新建一个maven项目,只留pom配置文件即可
pom中只留GAV的设置
打包方式为pom
然后设置modules
<modules>
<module>../user-core</module>
<module>../user-log</module>
<module>../user-dao</module>
<module>../user-service</module>
</modules>
依赖中的属性的定义
<properties>
<junit.version>4.10</junit.version>
</properties>
使用属性
<version>${junit.version}</version>
依赖的继承
建立parent的项目的pom中包为pom类型,把通用的继承写在里面
子项目继承
<parent>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<relativePath>../user-parent/pom.xml</relativePath>
</parent>
可以在parent项目的pom配置文件中设置,用dependencyManagement来管理依赖,不管理子项目会全部继承
<dependencyManagement>
<dependencies>
...
</dependencies>
</dependencyManagement>
然后再子项目中只需要指定GA即可
继承和聚合放在一起
${project.version}这中用法也可以
版本管理
总版本号.分支版本号.小版本号-里程碑版本
总版本号:框架的变动
分支版本号:一般增加了一些功能
小版本号:在分支版本上面进行bug的修复
里程碑:SNAPSHOT---alphe--beta--release--GA