有关Maven的配置和创建—>Maven初体验-配置和使用
上篇博客写到了Maven的使用和配置以及在eclipse中的创建Maven项目,接下来学习一下Maven的其他知识点.
1.使用Maven来管理jar包.
- Maven可以更加方便的管理jar包,从而减轻我们导包的重复和内存占用.
- 打开pom.xml文件进行jar包的管理:
2.Maven中依赖的传递性.
- 使用场景:当项目A依赖于B,B又依赖于C,此时A依赖于C
- 我创建了一个Maven项目名字为Maven001,我还有另外一个Maven项目MavenDay02-01,此时通过pom.xml来实现Maven001依赖于MavenDay02-01,所以使用三大坐标.
- 依赖的传递原则:
1.就近原则
依赖的传递过程中,存在重复jar包,依赖路径短的优先
2.先声明者优先
依赖的传递过程中,路径相同时,先声明者优先 - 依赖的排除:
1.场景:
当A依赖于B,但此时B中的一些jar包和A的存在冲突,此时就需要排除B中相关依赖
2.注意事项:
排除依赖时,一定要在依赖的过程中排除,exclusions标签要在dependency标签中使用,排除依赖时,只需要指定组织id和artifact id即可
3.Maven中统一jar包版本.
- 场景:我们以后可能会面对多人开发,多个小组开发多个模块,此时就需要统一一些版本,这样方便后期的维护和修改.比如我们使用的spring会有相对于的配套jar包版本,如果当我们spring版本变化,那这个配套jar包对应的也要改变,所以后期很麻烦,所以我们使用标签来自定义属性,这样通过一个变量来替代那些版本号,以后只需要修改那个变量就可以替换所有的版本号.
- 使用步骤:
4.Maven中Scope属性.
- 应用场景:当我们导入单元测试的jar包时会发现其多了一个属性:
- 关于Maven中,scope有五个属性
属性名称 | 作用 |
---|---|
compile | 缺省值,适用于所有阶段,会随着项目一起发布 |
provided | 类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar |
runtime | 只在运行时使用,如JDBC驱动,适用运行和测试阶段 |
test | 只在测试时使用,用于编译和运行测试代码。不会随项目发布。 |
system | 类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。 |
- 重点了解的三个和其运行范围:
范围 | complie | test | provided |
---|---|---|---|
主程序 | 是 | 否 | 是 |
测试程序 | 是 | 是 | 是 |
参与部署 | 是 | 否 | 否 |
5.Maven中常见的操作.
名称 | 作用 |
---|---|
compile | 编译 |
install | 安装 |
clean | 清理 |
test | 测试 |
package | 打包 |
- 使用截图:
1.有关编译的,右击Maven项目—>Run As—>Maven Build
6.Maven中的继承.
- 使用场景:如果我们需要使用单元测试,但当项目多个模块同时开发,我们每个模块的单元测试版本可能都不一样,所以这里需要使用统一的junit版本,但上面说道,scope为测试的无法继承,所以这里需要使用到父工程.
- 创建父工程:
- 在父工程里面引入jar包,然后创建子工程son01继承
- 这样son01就可以导入Father中依赖的单元测试的jar包l.
7.Maven中的聚合.
- 应用场景:如果一个工程下存在多个模块,在安装部署应用时需要对模块逐一进行安装部署,使用聚合方式,可以实现一次性打包.
- 注意事项:无论是继承之后安装子工程,聚合之后使用父工程打包部署子模块,先安装部署父工程到本地仓库中
- 具体步骤: