使用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

使用nexus构建maven私服      

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,密码为第五步查询的密码,登录成功后会让修改密码。

使用nexus构建maven私服

7)创建代理仓库,这里我创建了2个:aliyun-maven、ibiblio-maven

使用nexus构建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

使用nexus构建maven私服

2.配置本地maven

1)点击maven-public的copy,查询url

使用nexus构建maven私服

2) 修改settings.xml

将镜像拉去地址修改为私服地址

使用nexus构建maven私服

添加访问私服的账号密码,用于上传jar到私服时的验证

使用nexus构建maven私服

3.将本地服务打包成jar上传到私服

1)查询私服上传地址

使用nexus构建maven私服

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构建信息

使用nexus构建maven私服

根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库。

4)依次点击clenn->deploy上传jar到私服,控制台打印 BUILD SUCCESS则表示上传成功

使用nexus构建maven私服

5)在私服上查询jar信息

使用nexus构建maven私服

使用nexus构建maven私服