maven使用入门(二)_仓库

什么是 maven 仓库

maven 在某个位置统一储存构建,这个位置就是仓库。

仓库分类

本地仓库

不管是在 windows 还是 linux,每个用户在自己目录下有一个 .m2/repository/ 的目录,这就是本地仓库的地址。可以通过修改 settings.xml 文件修改这个地址。

远程仓库

安装好 maven 后,本地仓库是不存在的,当用户执行第一条 maven 命令,才会创建本地仓库。这时,仓库中也没有 maven 构建。需要通过配置,从远程仓库获取。
远程仓库好比书店,有各种各样的书本,当我们需要时,就去远程仓库获取,同时,也可以配置多个远程仓库。

中央仓库

中央仓库是一个默认的远程仓库,maven 的安装自带了中央仓库的配置。因此能做到“开箱即用”

私服

私服是一种特殊的远程仓库,架设在局域网内。私服主要有以下优点:

  • 节省自己的外网带宽
  • 加速 maven 构建
  • 部署第三方构件
  • 提高稳定性,增强控制
  • 降低中央仓库的负荷

远程仓库的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<repositories>
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Maven Repository Group</name>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</repository>
</repositories>

当默认的中央仓库无法满足项目需求时,可以在 pom 文件中配置远程仓库,大多数情况下,公司内部需要配置自己的私服地址。

id 标签声明了远程仓库,maven 自带的中央仓库 id 为 central,其他仓库的声明不能覆盖这个 id,否则就会覆盖中央仓库的配置。updatePolicy 配置从远程仓库检查更新的频率

  • daily:默认值,每天一次
  • never
  • always:每次构建都检查更新
  • interval:X ,每隔 X 分钟检查更新一次

远程仓库的认证

就像数据库一样,当我们用自己的远程仓库,会配置账号密码以防止数据泄露。通常在 settings 中配置认证信息,如

1
2
3
4
5
6
7
<servers>
<server>
<id>jboss-public-repository-group</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>

id 要与配置的仓库 id 保持一致

镜像

如果仓库 X 可以提供仓库 Y 的所有内容,那么可以认为 X 是 Y 的一个镜像。由于地理位置原因,从中央仓库获取构件通常很慢,因此,我们可以用国内的镜像仓库替代

1
2
3
4
5
6
7
8
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>

通常配置在 settings.xml 文件中,mirrorOf 表示该仓库为 central 的镜像,任何对于中央仓库的请求都会转移到此仓库。
镜像仓库完全屏蔽了被镜像仓库,因此,当镜像仓库不稳定时,maven 将无法访问被镜像仓库,而无法下载构件。