一、 依赖包的查询
1. 所有的依赖都是通过坐标进行存储的(GAV->groupId,artifactId,version)
2. 有一些网上的仓库提供了坐标的查询。
mvnrepository.com
nexus ->sonatype
二、 依赖的传递性
1、 依赖是会被传递的
A->C B->A --> b->C (这种依赖是基于compile这个范围进行依赖)
如果没有写scope默认就是compile范围。
对于依赖的依赖而言,主要是针对compile作用域传递。
2、 作用域的介绍
Maven的scope依赖作用域说明:
test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖
compile范围指的是编译范围有效,在编译和打包时都会将依赖存储进去
provided依赖:在编译和测试的过程有效,最后生成war包时不会加入,诸如:servlet-api,因为servlet-api,tomcat等web服务器已经存在了,如果再打包会冲突
runtime在运行的时候依赖,在编译的时候不依赖
默认的依赖范围是compile 。
3、 传递的冲突问题
1、 a->b1.0 c->b1.1 d->a和c,这个时候在d的pom中哪一个依赖献血,就使用先写依赖的版本。
如果d-><dependency>a< /dependency >< dependency >c< /dependency>依赖版本是b1.0。
2、 a->b1.0 c->b1.1 dàa和c->b1.0 f->d,c,如果路径的长短不一致就选择最小路径f->b1.1。
3、 如果需要精确的控制依赖包,可以使用依赖的排除功能进行控制。
或者全部排除,自己写一个自己想要的一个版本的依赖。
一、 依赖的聚合问题
新建项目,只包含pom.xml文件。
四个项目一次性打包。
二、 聚合和继承问题
属性定义以及引用:
继承:
Parent:
子类继承:
依赖的继承需要通过dependencyManagement来完成管理。
子类实现继承:
由于我们开发的是用一个同一个版本的项目,所以在我们开发的模块中的groupId和version可以用$(project.groupId)和$(project.version)表示。
三、 版本管理
格式:
总版本号.分支版本号.小版本号-里程碑版本
总版本号的变动一般表示框架的变动。
分支版本号一般表示增加了一些功能
小版本号:在分支版本上面进行bug的修复
里程碑版本:SNAPSHOT(开发中版本)àalpha(内部测试版本)àbeta(外部的工作版本)àrelease(发布版本)àGA(稳定版本)
hello0.0.1-SNAPSHOT->hello0.0.1-Release->hello1.0.0-SNAPSHOT
->hello0.1.0-SNAPSHOT->hello0.1.0-Release ->user1.0.0-Release