续接上篇未完内容!
POM:
含义 project Object Model 项目对象模型 ,我们会联想到DOM(Document Object Model)
意义:pom.xml是Maven工程的核心配置文件,与构建过程相关的一切设置都是在这文件中进行配置。意味着没有pom的话,Maven毫无意义-pom是Maven的核心所在。
坐标:
①数学中坐标:
在平面上使用X、Y两个向量可以唯一的定位到平面上的任何一点。在空间上可以使用X、Y、Z定位到控件的任何一点。
②Maven的坐标:gav
使用三个向量在仓库中唯一定位一个Maven工程。
groupId:公司或组织名倒序+项目名
<groupId>com.zjc.maven</groupId>
artifactId:模块名
<artifactid>Hello</artfactid>
version:版本
<version>1.0.0</version>
③Maven工程的坐标与仓库中路径的对应关系
仓库:
①分类
本地仓库:当前电脑部署的仓库目录,为当前电脑上的所有Maven工程服务。
远程仓库:
1)私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
2)中央仓库:架设在Internet上,为全世界所有的Maven工程服务。
3)中央仓库的镜像:架设在各大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的相应 用户请求。
②仓库中保存的内容
1)Maven自身需要的插件
2)第三方框架或工具的jar包(第一方是 jdk ;第二方就是咱们自己了)
3)自己开发 的Maven工程
依赖:
1.范围:scope
Compile:
- 对主程序是否有效:有效
- 对测试程序是否有效:有效
- 是否参与打包:参与
Test
- 对主程序是否有效:无效
- 对测试程序是否有效:有效
- 是否参与部署:不参与
- 是否参与打包:不参与
- 典型例子:Junit
Provided:
对主程序是否有效:有效
对测试程序是否有效:有效
是否参与部署:不参与
是否参与打包:不参与
典型例子:servlet-api.jar
2.传递的依赖性:
可以传递的依赖不必再每个模块工程中都重复声明,在最下面的工程声明一次即可
(非compile的依赖不能传递,单独工程只能单独引用,因此会出现重复声明)
3.排除性:附带过来的排除掉
1)需要设置依赖排除的场合
2)在哪个工程?
3.依赖的原则:解决模块工程之间的jar包冲突问题
1)验证路径最短者优先原则(就近原则:路径最短优先)Maven内置的原则
2)验证路径相同时,先声明者优先(先声明 指的是dependency标签的声明顺序)在pom.xml文件中县声明依赖的顺序
在pom.xml文件中先声明依赖的顺序:
4.统一版本号
需求:当需要统一修改升级版本时,手动注意自该不可靠。
可供参考:
1 使用Properties标签自定义统一声明版本号。
2 在需要统一版本的位置,使用${自定义标签号}引用声明的版本号
3 其实properties标签页可以定义其他的数据,凡是需要统一声明统一修改的内容都可以使用。