Nexus搭建私服
什么是Nexus
Nexus是一个强大的Maven仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。
运行原理
本地仓库与私服处在同一个局域网中,当本地仓库没有资源时,会向私服发起请求获取资源(同一个局域网,下载网速快)。如果私服上没有资源,再向远程仓库下载资源。
当开发人员开发项目时,已经将所有依赖的资源通过私服下载下来后,有新同事来了,只需要将maven配置连接到私服,就不需要从远程仓库下载,从而节约了宽带和下载时间。
在本地构建nexus私服的好处
1)加速构建;
2)节省带宽;
3)节省中央maven仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
测试环境:一台IP为192.168.2.20的虚拟机
一、下载文件并解压
tar -zxvf nexus-3.3.2-02-unix.tar.gz
二、修改配置文件
vim nexus-3.3.2-02/etc/nexus-default.properties
application-port=8081
application-host=192.168.2.20
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/nexus
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
vim nexus-3.3.2-02/bin/nexus.rc
run_as_user=root
三、启动
nexus-3.3.2-02/bin/nexus start
访问http://192.168.2.20:8081/nexus
安装成功后有两个默认账号admin、anonymous,其中admin具有全部权限默认密码admin123;anonymous作为匿名用户,只具有查看权限。
四、Nexus配置说明
点击【Browse】下的【Components】,如图
1.maven库名称说明
1)maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
2)maven-releases:私库发行版jar
3)maven-snapshots:私库快照(调试版本)jar
4)maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
2.maven库类型说明
1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库
2)hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库)
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值即被代理的远程仓库的路径)
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用)
五、连接私服(从nexus服务器上下载jar资源)
修改maven的setting.xml文件
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
<!-- 表示maven从指定的url服务器中获取jar资源 -->
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.2.20:8081/nexus/repository/maven-public/</url>
</mirror>
之后在项目中的pom.xml中添加jar包依赖,如果本地仓库没有该jar包资源,那么maven就会请求到nexus服务器获取jar包。
六、发布项目(将本地jar包上传到nexus中)
修改maven的setting.xml文件,添加以下配置:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
修改项目中pom.xml文件配置
<repositories>
<repository>
<id>maven-central</id>
<name>maven-central</name>
<url>http://192.168.2.20:8081/nexus/repository/maven-central/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<distributionManagement>
<snapshotRepository>
<id>snapshots</id>
<name>Nexus Snapshots</name>
<url>http://192.168.2.20:8081/nexus/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>releases</id>
<name>Nexus releases</name>
<url>http://192.168.2.20:8081/nexus/repository/maven-releases/</url>
</repository>
</distributionManagement>
注意:上边的id值需要与setting.xml文件中的id值一致
如果要发布SNAPSHOT版本,项目version的值加上-SNAPSHOT,jar包会发布到maven-snapshots
如果要发布RELEASES版本,去掉项目中version的SNAPSHOT,jar包会发布到maven-releases
本次测试以发布SNAPSHOT版本为例: