Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。
当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业务的性质是否是保密的等等,因为局域网的话只能在公司用,部署到公网的话员工在家里也可以办公使用。
建立了 Maven 私服后,当局域网内的用户需要某个构件时,会按照如下顺序进行请求和下载。
请求本地仓库,若本地仓库不存在所需构件,则跳转到第 2 步;
请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,则跳转到第 3 步。
请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。
此外,一些无法从外部仓库下载到的构件,也能从本地上传到私服供其他人使用。
Maven 私服具有以下 5 点优势:
需要先安装
1.docker
2.jdk
下载一个nexus3的镜像:
docker pull sonatype/nexus3
使用nexus3镜像创建并启动一个容器,然后指定暴露18091端口到对应主机的18091端口:
docker run -d -p 18091:18091 --name nexus -v /backup/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
查看启动容器的状态
docker ps
查看容器日志
docker logs -f -t 容器名称id
由于nexus的默认端口为8081,我们在启动的时候改为18091后需要修改nexus的配置文件
先进入容器
docker exec -it 容器名称 bash
修改配置文件
vi /opt/sonatype/nexus/etc/nexus-default.properties
同时查看admin密码
vi /nexus-data/admin.password
这样就可以在本地浏览器进入nexus页面了,地址为 服务器ip:18091
右上角登录用户名为admin,密码为之前查看的密码。
删除nuget开头的仓库
配置maven-central的代理地址
阿里代理地址:http://maven.aliyun.com/nexus/content/groups/public/
servers标签修改 仓库权限用户名和密码
<server>
<id>maven-releases</id>
<username>admin</username>
<password>wubuer@2021</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>wubuer@2021</password>
</server>
mirrors添加仓库中group类型的仓库
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://119.3.90.18:18091/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
profiles添加仓库中仓库信息
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>maven-public</id>
<url>http://119.3.90.18:18091/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>maven-snapshots</id>
<url>http://119.3.90.18:18091/repository/maven-snapshots/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>maven-releases</id>
<url>http://119.3.90.18:18091/repository/maven-releases/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>maven-snapshots</id>
<url>http://119.3.90.18:18091/repository/maven-snapshots/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
添加标签
<distributionManagement>
<repository>
<id>maven-releases</id>
<name> Nexus Release Repository </name>
<url> http://119.3.90.18:18091/repository/maven-releases/ </url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name> Nexus Snapshot Repository </name>
<url> http://119.3.90.18:18091/repository/maven-snapshots/ </url>
</snapshotRepository>
</distributionManagement>