【环境搭建】Nexus搭建Maven私服
Nexus官方下载地址:https://help.sonatype.com/repomanager3/download
Docker启动
1 2 3 4
| #查找镜像;一般安装star数最多的版本,目前最新是sonatype/nexus3 docker search nexus #拉取镜像 docker pull sonatype/nexus3
|
简单方式启动
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #指定数据卷,防止每次启动容器,容器里的数据丢失,实现容器和虚拟机数据共享。 docker run -p 8081:8081 --name nexus sonatype/nexus3
#如果有容器和下面要创建的容器同名的话,先删除 docker rm <container_name>
#指定虚拟机与容器共享的文件夹 mkdir /usr/local/docker/nexus/nexus-data
#启动容器 docker run -p 8081:8081 --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data snoatype/nexus3
#指定数据卷后启动,可能会报一些权限错误,导致启动不起来。可能会需要修改文件夹权限 chmod 777 /usr/local/docker/nexus/nexus-data
|
利用docker-compose启动
1 2 3 4
| #创建docker-compose.yml mkdir /usr/local/docker cd /usr/local/docker vi docker-compose.yml
|
docker-compose.yml内容如下:
1 2 3 4 5 6 7 8 9 10
| version: "3.7" services: nexus: restart: "no" image: sonatype/nexus3 container_name: nexus ports: - 8081:8081 volumes: - /usr/local/docker/nexus/nexus-data:/nexus-data
|
version : 指定docker-compose语法版本,版本不同,支持的docker也不同
restart
services : 多种服务的根节点
nexus : 服务名随意起,代表要创建的服务
restart : 容器的重启策略,有no、always、on-failure、
unless-stopped四种可选值。
image : 容器依据的镜像
container_name : 容器名
ports : 端口
volumes : 数据卷
启动后访问地址:http://ip:port/
默认账号:admin
管理员登录密码在 nexus/nexus-data
中admin
开头的文件中,将其拷贝输入即可。
登录之后会要求修改密码,按要求修改即可。
Nexus 配置
在Maven的conf下的setting.xml文件中配置
1 2 3 4 5 6 7 8 9 10
| <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server>
|
配置仓库地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <mirror> <id>maven-public</id> <name>maven-public</name> <mirrorOf>*</mirrorOf> <url>http://${ip}:${port}/repository/maven-public/</url> </mirror>
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
<mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/repositories/central/</url> </mirror>
|
在项目pom.xml文件里配置私服仓库地址
1 2 3 4 5 6 7 8 9 10 11 12 13
| <repositories> <repository> <id>maven-nexus</id> <name>maven-nexus</name> <url>http://${ip}:${port}/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
|
发布私有jar包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <distributionManagement> <repository> <id>releases</id> <name>Releases</name> <url>http://${ip}:${port}/repository/maven-releases/</url> </repository> <snapshotRepository> <id>snapshots</id> <name>Snapshot</name> <url>http://${ip}:${port}/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> </plugin> </plugins> </build>
|
私服工作原理:
配置Nexus之前,需要先了解一下私服的工作原理,如下图:
找依赖包的流程: 首先在本地仓库中找,如果没命中,那么就找远程私服;远程私服的查找规则同样是先找host属性的私有库,然后再去找proxy属性的远程仓库;可以配置多个proxy;
Nexus仓库类型介绍
默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。
- hosted(宿主仓库库) :存放本公司开发的jar包(正式版本、测试版本)
- proxy(代理仓库):代理中央仓库、Apache下测试版本的jar包
- group(组仓库):使用时连接组仓库,包含Hosted(宿主仓库)和Proxy(代理仓库)