目录
1.前言
一直想写一个系列,将平时工作中使用的环境、技术都写进同一系列中,目的主要使自己知识成体系,初步规划内容有《Docker+Nexus搭建Maven私服》、《Docker+Jenkins实现自动化部署》、《Springcloud系列》、《k8s服务编排》,后续可能还会有新的动西加入,涉及的动西比较多,时间会比较长,希望自己能坚持写完。
2.系统环境
1.环境搭建均使用Docker安装,故需要Docker相关知识,对于Docker不熟悉的童鞋可参见我的另一篇文章Docker学习笔记之基础知识
2.以下ip非腾讯云真实ip,大家根据自己实际情况填写,此处只是方便后续使用
环境 | 版本 |
---|---|
腾讯云系统 | centos7 |
ip | 192.168.1.100 |
Docker | 18.09.6 |
Nexus | 3.x |
Maven | 3.6.1 |
3.安装Nexus
- 说明
此安装步骤参照Docker Hub官网安装,大家也可移步官网查看sonatype/nexus for docker安装
- docker安装Nexus
# 拉取镜像
$ docker pull sonatype/nexus3
# 创建本地挂载文件夹
$ mkdir -p /home/milk/docker/nexus-data
# 设置挂载文件夹权限
$ sudo chown -R 200:200 /home/milk/docker/nexus-data
# 启动sonatype/nexus3镜像
$ docker run -d -p 8081:8081 --name nexus -v /home/milk/docker/nexus-data:/nexus-data sonatype/nexus3
- 安装完成
私服安装完成后,浏览器键入
http://192.168.1.100:8081
看到如下界面表示Nexus安装成功
4.私服设置
- 登录设置密码
1.私服安装完成后都会有一个默认密码,需自己进入文件夹查询,以下提供两种方式查询
2.查看登录后会自动进入修改密码导航,自己根据需求进行修改即可
# 方法一:直接在挂载文件夹中查询
$ cd /home/milk/docker/nexus-data
$ cat admin.password
# 方法二:直接进入docker容器中的nexus-data
$ docker exec -it 窗口id /bin/bash
$ cat /nexus-data/admin.password
- 设置
登录成功后,会看到如下页面,多了一个设置按钮,我们关注下图箭头处即可
- Repositories设置
仓库分为如下几种,hosted,group,proxy三种
hosted:表示存放本地上传的jar包
proxy:表示存放第三方依赖
group:可以聚合多个仓库
1. 选择创建仓库-》maven2(proxy)
2.仓库设置
1.Name:可自定义
2.Proxy:可按需设置,必如阿里云仓库地址
- Roles设置
1.创建角色
角色设置,默认有管理员和游客
2.设置权限
1.以下设置了developer角色
2.设置了该角色只能对releases和snapshots仓库进行操作权限
- Users设置
选择创建用户,信息可以按需填写,下边可选择我们刚才配置的developer角色,配置即可
5.Maven设置
通过上述操作,私服已经搭建完成,现在我们需要设置项目中的pom.xml和settings.xml,只有完成如下设置,才能将我们配置的私服完全运用起来
5.1 settings.xml设置
- localRepository: 表示本地仓库地址
<localRepository>/home/zycao/work/study-repo</localRepository>
- service:表示登录私服仓库用户名和密码
<servers>
<server>
<id>study-nexus</id>
<username>user1</username>
<password>user123456</password>
</server>
</servers>
- mirror:配置镜像
- id:唯一不重复即可
- mirrorOf:配置仓库id,对应下边
repository
中id,如果配置为*
则表示代理所有依赖下载路径为mirror配置的url,还有许多关于设置相关的,大家可参考官方文档进行设置镜像设置 - url:配置镜像地址,此处为配置的私有参库地址
<mirrors>
<mirror>
<id>nexus-myself</id>
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://192.168.1.100 :8081/repository/maven-public/</url>
</mirror>
</mirrors>
- profile:配置不同的仓库
- id:在后续选择激活那个配置时用到,唯一不重复
- repository:可配置多个,在此配置私有仓库地址
<profiles>
<profile>
<!--配置激活文件名,唯一不重复-->
<id>study-nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://192.168.1.100 :8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://192.168.1.100 .245:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
- activeProfiles:决定选择那一个配置生效,此处即为上边配置的profiles的id
<activeProfiles>
<activeProfile>study-nexus</activeProfile>
</activeProfiles>
- 完整settings.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--本地仓库地址-->
<localRepository>/home/milk/work/study-repo</localRepository>
<!--使用命令创建项目时,以对话模式 Default:true
<interactiveMode>true</interactiveMode>
-->
<!-- offline 决定maven是否离线模式运行,默认离线 Default: false
<offline>false</offline>
-->
<pluginGroups>
</pluginGroups>
<!-- proxies 设置上网代理服务器-->
<proxies>
</proxies>
<!-- servers 配置私服用户名及密码 -->
<servers>
<server>
<id>study-nexus</id>
<username>user1</username>
<password>user123456</password>
</server>
</servers>
<!--<mirrors>-->
<!--<mirror>-->
<!--<id>nexus-myself</id>-->
<!--<mirrorOf>*</mirrorOf>-->
<!--<name>Nexus myself</name>-->
<!--<url>http://192.168.1.100 :8081/repository/maven-public/</url>-->
<!--</mirror>-->
<!--</mirrors>-->
<!--根据配置进行激活选择-->
<profiles>
<profile>
<!--配置激活文件名,唯一不重复-->
<id>study-nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://192.168.1.100 :8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://192.168.1.100 .245:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>study-nexus</activeProfile>
</activeProfiles>
</settings>
5.2 pom.xml设置
创建一个项目,将其打为jar 包并上传至maven私服,创建项目自行创建,以下只对pom.xml进行配置说明
- 设置发布仓库地址
<!--设置发布仓库地址-->
<distributionManagement>
<!--releases版本发布至此仓库-->
<repository>
<id>study-nexus</id>
<name>study-nexus</name>
<url>http://192.168.1.100:8081/repository/maven-releases/</url>
</repository>
<!--snapshots版本发布至此版本-->
<snapshotRepository>
<id>study-nexus</id>
<name>study-nexus</name>
<url>http://192.168.1.100:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
- 设置编译环境及插件
<!--设置构建插件及环境-->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<!--构建设置-->
<configuration>
<encoding>utf-8</encoding>
<!--java编译版本-->
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
6 执行发布及下载jar包操作
6.1 发布jar包
直接使用idea的deploy命令即可
下图中可看到刚才上传的jar报,坐标,说明一下,如果是SNAPSHOT版本,版本号为生成的时间戳,但可填写baseVersion
6.2 下载jar包
# 在需要依赖的项目pom.xml增加依赖坐标即可
<dependency>
<groupId>com.study.nexus</groupId>
<artifactId>nexus-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
7 .参考文档
http://maven.apache.org/guides/mini/index.html
https://hub.docker.com/r/sonatype/nexus3
https://help.sonatype.com/repomanager3