Maven私服
-
定义
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的用户使用。当Maven需要下载构件的时候,它从私服请求,如果 私服上不存在该构件,则从外部远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。
-
概念
-
本地仓库:apache-maven,配置在idea中的maven的repository
-
maven工程:带有pom文件的工程
-
远程仓库:maven-apache的默认仓库
-
maven私服:阿里巴巴的maven镜像、码云的鏡像等等
-
-
流程
一般流程:maven工程需要架包,通过maven坐标(groupId、artifactId和version),首先回去本地仓库,如果没有,再去私服仓库,如果私服仓库没有,在到远程仓库下载,下载的架包,现在私服保存,在到本地仓库缓存。
-
应用场景
- 公司开发没有外网,私服有外网
- 在微服务开发中,实现对微服务接口实现发布与调用,一般不会引入其他项目的源码。
- 公司有自己开发的架包,不对外开放,但是架包被其他人引用,用网络或者U盘传输不安全同时也比较麻烦。
-
优点
- 节省自己的外网带宽
- 加速Maven构建
- 部署自己内部的第三方构件
- 提高稳定性,增强控制
- 降低中央仓库的负荷。
-
Maven私服搭建
- docker安裝
-
下载一个nexus3的镜像
docker pull sonatype/nexus3
-
将容器内部/var/nexus-data挂载到主机/root/nexus-data目录
docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
-
关闭防火墙,访问http://ip:8081(Maven私服启动容器稍微比较慢,等待1分钟即可。)
-
默认登陆账号 admin admin123
-
创建用户、配置用户权限(对私服的操作)、私服仓库,将maven、阿里云的镜像和新建的私仓库给新建的用户
-
windows安装
-
架包上传
-
配置settings.xml
<server> <id>私服Name</id> <username>用户名称</username> <password>用户密码</password> </server>
-
pom文件配置
<!--指定仓库地址 --> <distributionManagement> <repository> <!--此名称要和.m2/settings.xml中设置的ID一致 --> <id>私服Name</id> <url>私服仓库地址</url> </repository> </distributionManagement><build> <plugins> <!--发布代码Jar插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version> </plugin> <!--发布源码插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
-
发布
在mvn deploy的时候,根据snapshot和release的规则,判断版本号后面是否带有-SNAPSHOT,带有则认为是快照版本,会发布到snapshot库,不带则认为是发布版本,会发布到release库中。
-