前言
Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库。有三种专门的Maven仓库管理软件可以用来帮助大家建立私服:
Apache基金会的Archiva、JFrog的Artifacotory和Sonatype的Nexus,Archiva是开源的,Artifacotory和Nexus的核心也是开源的。
Nexus 是“开箱即用”的系统,不需要数据库,它使用文件系统加 Lucene 来组织数据,支持 WebDAV 与 LDAP 安全身份认证。Nexus 还提供了强大的仓库管理功能,构件搜索功能,它基于 REST,友好的 UI 是一个 extjs 的 REST 客户端,它占用较少的内存,基于简单文件系统而非数据库。Nexus 极大地简化了本地内部仓库的维护和外部仓库的访问。另外,Nexus 还可以在代理远程仓库的同时维护本地仓库,以降低中央仓库的负荷,节省外网带宽和时间。
本篇 Nexus 选择 3.x 版本,Nexus3.x 相较 2.x 版本有很大的改变:
1)从底层重构,从而提高性能,增强扩展能力,并改善用户体验
2)升级界面,增加更多的浏览,搜索和管理功能
3)提供安装包,使部署更简单(安装完自动添加成服务,省去手动添加的麻烦)
4)增加 Docker,NuGet,npm,Bower的支持
5)提供新的管理接口,从而能自动管理任务。
注意:3.x版本只能运行在JVM8及以上
总之,本地内部仓库在本地构建nexus私服的好处有:
1)加速构建、稳定;
2)节省带宽、节省中央maven仓库的带宽;
3)控制和审计;
4)能够部署第三方构件;
5)可以建立本地内部仓库、可以建立公共仓库
下载解压安装包
wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.10.0-04-unix.tar.gz
tar zxvf nexus-3.10.0-04-unix.tar.gz
启动停止
进入解压后生成的文件夹 使用bin/nexus start(stop) 命令进行启动,nexus启动后大约需要一分钟才能访问到页面
如果提示使用root用户进行启动是不提倡的,使用命令: vi /etc/profile编辑环境变量 在最后追加一行 export RUN_AS_USER=root
Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下:
1、因为其中的rc.local是在完成所有初始化之后执行,因此可以把启动脚本写到里面;
2、用root账号登陆Linux,vi /etc/rc.d/rc.local编辑文件,在最后加入需要执行的脚本程序:
su -l $username -c "/nexus/nexus-3.10.0-04/bin/nexus start"
访问nexus:IP:Port,默认端口是8081,默认管理员用户名和密码是admin/admin123,默认工作目录是sonatype-work(路径一般在nexus同级目录下),可以在etc/nexus-default.properties配置中修改
创建自己的代码仓库
Blob Stores
文件存储的地方,创建一个目录的话,对应文件系统的一个目录
Repositories
1)group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库;
2)hosted(宿主类型):内部项目的发布仓库(一般分为releases发布版以及snapshots快照);
3)proxy(代理类型):从远程中央仓库中寻找数据的仓库;
4)virtual(虚拟类型):虚拟仓库(这个基本用不到,重点关注上面三个仓库的使用);
group就是能把多个仓库合成一个仓库来使用
hosted是宿主机的意思,有三种方式,Releases、SNAPSHOT、Mixed
Releases: 一般是已经发布的Jar包
Snapshot: 未发布的快照版本
Mixed:混合的
proxy就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。
Name:就是为代理起个名字
Remote Storage: 代理的地址,Maven的地址为: https://repo1.maven.org/maven2/
Blob Store: 选择代理下载包的存放路径
上传到nexus私服
1. 修改Maven的settings.xml文件,加入认证机制
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
2. 修改工程的pom文件
!--将生成的项目部署到远程仓库(私服)-->
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://${maven.server}/repository/mvn-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://${maven.server}/repository/mvn-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注: pom文件中的id要跟settings.xml文件中的id一定要对应上
指定nexus私服
<!--将nexus私服配置为远程仓库--> <repositories> <repository> <id>nexus</id> <url>http://${maven.server}/repository/mvn-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories>
来源:oschina
链接:https://my.oschina.net/u/3471038/blog/1794418