使用nexus构建maven私服
一.nexus简介
nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问.
nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据
nexus使用ExtJS来开发界面,利用Restlet来提供完整的REST APIs,通过IDEA和Eclipse集成使用
nexus支持webDAV与LDAP安全身份认证.
nexus提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,占用较少的内存,基于简单文件系统而非数据库.
二.使用私服的好处
1)加速构建;
2)节省带宽;
3)节省中央maven仓库的带宽;
4)稳定(应付一旦中央服务器出问题的情况);
5)控制和审计;
6)能够部署第三方构件;
7)可以建立本地内部仓库;
8)可以建立公共仓库
这些优点使得Nexus日趋成为最流行的Maven仓库管理器。
三.部署
1.使用docker安装nexus
1)拉去最新的nexus镜像
docker pull sonatype/nexus3
2)查询数据存储路径
docker inspect sonatype/nexus3
3)运行nexus容器
docker run -d -p 8081:8081 --name nexus -v /home/nexus/data:/nexus-data --restart=always sonatype/nexus3
3)对外开放8081端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
4)重启防火墙
systemctl restart firewalld.service
5)查询初始密码
cat /home/nexusdata/admin.password
6)在浏览器中输入http://192.168.0.1:8081/,点击右上角进行登录,账号为admin,密码为第五步查询的密码,登录成功后会让修改密码。
7)创建代理仓库,这里我创建了2个:aliyun-maven、ibiblio-maven
说明:
maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库发行版jar
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用。
hosted,本地仓库,通常我们会部署自己的构件到这一类型的仓库。比如公司的第二方库。
proxy,代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
8)左键点击maven-public,将创建的代理仓库添加到maven-public
2.配置本地maven
1)点击maven-public的copy,查询url
2) 修改settings.xml
将镜像拉去地址修改为私服地址
添加访问私服的账号密码,用于上传jar到私服时的验证
3.将本地服务打包成jar上传到私服
1)查询私服上传地址
2)在pom.xml文件中加入
<distributionManagement> <repository> <id>releases</id> <url>http://192.168.0.1:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <url>http://192.168.0.1:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
3)修改jar构建信息
根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库。
4)依次点击clenn->deploy上传jar到私服,控制台打印 BUILD SUCCESS则表示上传成功
5)在私服上查询jar信息