文章目录
私服
总体上来说私服有以下好处:
- 加速maven构件的下载速度
- 节省宽带,加速项目构建速度
- 方便部署自己的构件以供他人使用
- 提高maven的稳定性,中央仓库需要本机能够访问外网,而如果采用私服的方式,只需要本机可以访问内网私服就可以了
有3种专门的maven仓库管理软件可以用来帮助我们搭建私服
-
Apache基金会的archiva
http://archiva.apache.org/
-
JFrog的Artifactory
https://jfrog.com/artifactory/
-
Sonatype的Nexus
https://my.sonatype.com/
用的最多的是第三种Nexus,本文我们主要以这个来讲解
windows中安装nexus私服
linux中安装nexus私服
Nexus中仓库分类
代理仓库
代理仓库主要是让使用者通过代理仓库来间接访问外部的第三方远程仓库的,如通过代理仓库访问maven中央仓库、阿里的maven仓库等等。
宿主仓库
宿主仓库主要是给我们自己用的,主要有2点作用
- 将私有的一些构件通过nexus中网页的方式上传到宿主仓库中给其他同事使用
- 将自己开发好一些构件发布到nexus的宿主仓库中以供其他同事使用
仓库组
maven用户可以从代理仓库和宿主仓库中下载构件至本地仓库,为了方便从多个代理仓库和宿主仓库下载构件,maven提供了仓库组,仓库组中可以有多个代理仓库和宿主仓库,而maven用户只用访问一个仓库组就可以间接的访问这个组内所有的仓库,仓库组中多个仓库是有顺序的,当maven用户从仓库组下载构件时,仓库组会按顺序依次在组内的仓库中查找组件,查找到了立即返回给本地仓库,所以一般情况我们会将速度快的放在前面。
仓库组内部实际上是没有构件内容的,他只是起到一个请求转发的作用,将maven用户下载构件的请求转发给组内的其他仓库处理。
配置本地Maven从nexus下载构件
在项目的pom.xml
配置方式
<repositories>
<repository>
<id>maven-nexus</id>
<url>http://localhost:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
由于nexus私服需要有用户名和密码登录才能访问,所以需要有凭证,凭证需要在settings.xml
文件中配置,在~/.m2/settings.xml
文件的servers
元素中加入如下内容:
<server>
<id>maven-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
注意上面的server->id
的值和pom.xml
中repository->id
的值一致,通过这个id关联找到凭证的。
setting.xml文件 配置方式
-
setting.xml
的mirrors
元素中加入如下配置<mirror> <id>mirror-nexus</id> <mirrorOf>*</mirrorOf> <name>nexus镜像</name> <url>http://localhost:8081/repository/maven-public/</url> </mirror>
上面mirrorOf配置的*,说明所有远程仓库都通过该镜像下载构件。
url:这个为nexus中仓库组的地址 -
配置访问凭证
<server> <id>mirror-nexus</id> <username>admin</username> <password>admin123</password> </server>
注意上面的
server->id
的值和pom.xml
中repository->id
的值一致,通过这个id关联找到凭证的。
将本地构件发布到私服的2种方式详解
- 使用maven部署构件至nexus私服
- 手动部署第三方构件至nexus私服:比如我们第三方发给我们的一个包,比如短信发送商的jar包,这个包远程仓库是不存在的,我们要把这个包上传到私服供所有开发使用。
nexus私服中存储用户的构件是使用的宿主仓库,nexus私服中提供了两个默认的宿主仓库分别用来存放SNAPSHOT版本和release版本.
第一步:修改项目中pom.xml
的配置,加入下面内容:
<distributionManagement>
<repository>
<id>release-nexus</id>
<url>http://localhost:8081/repository/maven-releases/</url>
<name>nexus私服中宿主仓库->存放/下载稳定版本的构件</name>
</repository>
<snapshotRepository>
<id>snapshot-nexus</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
<name>nexus私服中宿主仓库->存放/下载快照版本的构件</name>
</snapshotRepository>
</distributionManagement>
上面2个url分别是上图中两个宿主仓库的地址
第二步:修改settings.xml
<server>
<id>release-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshot-nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
注意上面第1个
server->id
的值需要和pom.xml
中的distributionManagement->repository->id
的值一致。
第2个server->id
的值需要和pom.xml
中的distributionManagement->snapshotRepository->id
的值一致。
第三步:执行mvn deploy
命令
执行这个命令的时候,会对构件进行打包,然后上传到私服中.