搭建Maven私服是一个架构师必备的基础技能,一般大中型互联网企业都会搭建自己的Maven私服,私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的用户使用。当Maven需要下载构件的时候,它从私服请求,如果 私服上不存在该构件,则从外部远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。
随着微服务、分布式的兴起,一个项目被拆分为n个应用进行部署,应用之间彼此互相依赖,比如一个服务一般会对外提供一个服务列表供外部调用,而这个服务列表一般是以jar包的形式,搭建了Maven私服,可以方便的从私服上下载其他服务的jar包,提供开发效率。
注意:Maven私服一般搭建在公司的内网,无法通过外网访问。
Nexus是Maven仓库管理器,也可以叫Maven的私服。Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓库中的每个Artifact。Nexus是一套“开箱即用”的系统不需要数据库,它使用文件系统加Lucene来组织数据。
如下是Maven私服的工作方式
第一步,安装Nexus
docker pull sonatype/nexus3
第二步,启动Nexus
docker run -d -p 8081:8081 --name nexus -v /home/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
第三步,访问http:ip:8081/即可访问Nexus
第四步,点击右上角Sign IN登录,默认用户名密码网上都是说的admin/admin123,这里提示的是admin.password中的密码,我们可以使用docker查找一下
sudo docker exec -it 3ad11ac2dbe6 /bin/bash
使用此命令进入容器内部,3ad11ac2dbe6是容器ID,
bash-4.4$ cd /nexus-data/
bash-4.4$ vi admin.password
这个字符串就是默认密码。
第五步,登录成功按照提示修改密码即可。
第六步,查看Nexus创建的默认仓库
这里解释一下这些仓库类型的含义:
第七步,创建仓库
创建仓库,点击Create repository,然后选择maven2(hosted)然后输入仓库名称test-repository。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy。
第八步,创建用户
第九步,测试应用推送到Nexus,修改Maven的配置文件settings.xml,添加私服的配置
test-repository
testuser
testuser
第十步,创建一个Maven项目,命名为nexusdemo1,并提供一个方法sayHello
第十一步,修改Idea的Maven配置
第十二步,修改pom文件指定仓库地址
4.0.0
com.curise.nexus
nexusdemo1
1.0-RELEASE
test-repository
http://192.168.1.10:8081/repository/test-repository/
org.apache.maven.plugins
maven-deploy-plugin
2.7
org.apache.maven.plugins
maven-source-plugin
2.2.1
package
jar
注意:版本必须是RELEASE,因为仓库设置的类型为RELEASE
url是如下图的内容:
第十三步,打包发布到私服,如果你使用mvn deploy命令的方式发布,需要注意环境变量的Maven地址是否指向了此项目使用的Maven地址。
第十四步,回到网站搜索nexusdemo1jar包,至此就已经成功把jar包发布到Maven私服
第十五步,测试从Maven私服下载依赖,先从本地仓库删除掉nexusdemo1jar包
第十六步,创建Maven项目引入此nexusdemo1依赖,注意仓库地址用的repositories标签
第十七步,测试