坐标
在实际的生活中,我们可以将地址看成是一种坐标。不同的省,不同的市,不同的区,不同的街道等一系列信息标识了每一个不同的地址。在深圳经常吃外卖的人应该是有体会的,送外卖的小哥都会根据你填写的地址将外卖送给你,而你填的地址就标识了唯一的一个地址。
坐标就好比每一个Java构件的身份证一样。Maven的世界是拥有非常多的Java构件的,可能是jar、可能是war、也可能是其他的一些东西。假如Maven中没有坐标的概念,我们是无法来区分这些构件的,所以我们要唯一标识每一个构件。
- groupId : 指公司里面开发的某个项目,即组织名称,例如:zttc.itat.maven,在F盘目录下,将是: zttc/itat/maven目录。
- artifactId : 项目里面某一个具体的模块,例如:maven-ch01,在F盘目录下,将是:zttc/itat/maven/maven-01目录。
- version : 版本号,例如:1.0,在M2_REPO目录下,将是:org/codehaus/mojo/my-project/1.0目录。
这个版本的管理其实是有讲究的,一般都是通过三个号+里程碑-------->x.x.x.里程碑来进行版本管理的:
- 第一个x是大版本,即可能会有大调整的版本,比如hibernate3.0和hibernate4.0的变化
- 第二个x属于大版本中的分支
- 第三个x就是在这个分支做了多少更新,就会储存在这里
里程碑的版本:
- SNAPSHOT 快照版(正在开发中的版本)
- alpha 项目组内部测试版本(开发完成之后由别人来做内部的测试)
- beta 当内部做完测试之后,就是alpha之后,由使用人员下载下来用的版本
- Release(RC) 当使用人员用完之后上交使用报告给我,就可以把版本更新成Release
- GA 可靠版本
仓库
【本地仓库和远程仓库】
假设abc三人负责不同的模块
A------>core
B------>service
C------>action
因为B依赖于A,C依赖于A、B,所以比较麻烦,而且如果开发了几个不同的版本,那就更麻烦了,怎么办?我们可以建立一个仓库,可以让ABC所开发的数据提交到这个仓库中,我们只要添加依赖就会自动从这个仓库下载。
maven会在仓库里面寻找我们所需的jar文件。仓库位置默认在我的文档的.m2这个文件夹中的repository,这个就是maven的本地仓库。
本地仓库找不到我们需要的构件则会去Maven的全球中央仓库(https://repo.maven.apache.org/maven2)中查找,然后下载。如果远程仓库也找不到,就会报错。
【私有服务器】
如果有一天新来一个开发人员,则他下载包的量非常大,效率不高。怎么办呢?我们不让项目直接访问中央工厂,我们先在中央工厂外面搭建一个工厂,也叫私有服务器,由它同一访问我们的中央工厂。
当新的开发人员已一来,发现本地仓库没有,就回到私服里面去找,则直接从自己的服务器上面下载就ok了。
【镜像仓库】
所谓镜像就是a提供和b一样的功能。因为maven的仓库都是国外的,有时因为一些原因导致我们无法访问外网,好在我们国内就有一样的仓库。
如何修改镜像仓库的位置呢?打开以下位置的settings.xml
找到如下代码。这里为我们提供了一个示例,我们把它复制出来,并改动一些配置,改成国内仓库的配置。
id表示该镜像仓库的id,mirrorOf表示为哪个仓库配置镜像(central指的是中央仓库)