【玩转Docker容器 5】基于Docker搭建Maven私服,以及项目如何使用Maven私服详解
@TOC
推荐个人Docker文章,讲的非常详细
【玩转Docker容器 1】Dockerd的详解及安装【玩转Docker容器 2】基于Docker一分钟搭建完 Jdk、Mysql、Nginx、Redis、Tomcat环境
【玩转Docker容器 3】基于Docker部署SpringBoot项目
【玩转Docker容器 4】基于Docker搭建Docker私服,以及如何使用Docker私服详解
【玩转Docker容器 5】基于Docker搭建Maven私服,以及项目如何使用Maven私服详解
【玩转Docker容器 6】基于Docker构建GitLab管理代码
【玩转Docker容器 7】基于Docker安装Jenkins实现自动化构建、部署、测试、监控项目
1.Nexus是什么
Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问 和部署在你所维护仓库中的每个Artifact。我们可以在局域网搭建一个maven私服,用来部署第三方公共构件或者作为远程仓库在该局域网的一个代理。
2.Nexus和Maven私服原理
解释:Nexus就是Maven的私服仓库,一般大一点的公司都已自己的私有Maven库
1、我们从项目实际开发来看一些无法从外部仓库下载的组件(自定义的组件,未开源),例如内部的项目还要用的,这样我们就可以署到私服上,以便供其他依赖项目使用。
2、为了节省带宽和时间,在局域网内架设一个私有的仓库服务器,用其代理所有外部的远程仓库。当本地Maven项目需要下载构件时,先去私服请求,如果私服没有,则再去远程仓库请求,从远程仓库下载构件后,把构件缓存在私服上。这样,及时暂时没有Internet链接,由于私服已经缓存了大量构件,整个项目还是可以正常使用的。同时,也降低了中央仓库的负荷。
3.什么场景用Maven私服呢?
1.在实际开发中,项目中可能会用到第三方的jar、内部通讯的服务接口都会打入到公司的私服中。
2.自定义的jar包,或者SpringBoot的pom包,一些自己封装好的包打包到私有Maven中去,只供自己或者朋友使用(就比如你封装了个非常强大的代码自动生成器,或者微信和支付宝支付的封装,只需要稍微的配置就可以使用,这时你就可以打包到Maven私服中去,下次直接在pom或xml文件配置坐标就行了,只给自己或者公司或者朋友使用)
4.基于Docker搭建Nexus构建Maven私服
1.下载nexus3的镜像
一定要是搭建了Docker的Linux环境哟,不知道的可以看我之前位置
输入:
docker pull sonatype/nexus3
复制代码
2.使用镜像启动一个容器
注:将容器内部/var/nexus-data挂载到主机/root/nexus-data目录(8081:8081是Linux与Docker的端口映射)
docker run -d -p 8081:8081--name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
复制代码
3.登录Maven私服
关闭防火墙,访问http://ip:8081
Maven私服启动容器稍微比较慢,等待一会即可。
注:默认账号密码为admin/admin123
妈耶,进不去,算了改密码吧
4.修改初始密码,登录Maven私服
用户名或密码不正确,这个时候我们可以去admin.password文件中去看初始密码。
输入:(找到密码文件)
find / -name 'admin.password'
复制代码
输入:
cat 输入上面查找的文件位置获取密码
复制代码
那一串乱七八糟的就是密码。那他的登陆进去修改密码 再次登录,登录进去后他会默认让你修改用户名密码,注意俩个都是打新密码 一直下一步就好了
5.创建Maven私服
1.创建Maven总库
点击蓝色的创建就ok啦
2.创建Maven存储库
点击设置界面,选择Repositories,点击Create repository,如下图所示: 选择仓库类型,这里Maven有三种类型,分别是group、hosted、proxy。这里只演示hosted类型,所以选择Maven(hosted),如下图: 这里的仓库选择正确哟 输入了name,选择好了Storage,后移到底下选择创建 出现如图 已成功,忽略地下的docker为什么很慢的不一样,docker是之前创建的
6.Java项目构建jar包上传至Maven私服
1.修改本地settings.xml
使用idea找到settings.xml
2.将其打开找到的setting.xml
在server标签里面加上你登录maven私服的用户名密码 有可能这个文件会有很多注释,忽略就好了,我截的屏没有
3.配置项目的pom文件
在pom里面添加
<!--注意限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE -->
<!--指定仓库地址 -->
<distributionManagement>
<repository>
<!--此名称要和.m2/settings.xml中设置的ID一致 -->
<id>boot-tool</id>
<!--上传的位置-->
<url>http://120.77.0.58:8081/repository/boot-tool/</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>
复制代码
上传的位置记得要改,改成私有maven仓库的位置 私有仓库位置在:
4.打包上传
在ider底下点击Terminai
输入:mvn deploy
等待一会就上传成功了 网页访问自己的上传位置看看 已成功
7.测试从Maven私服使用jar包
如何引用呢,我这里创建了一个空的Maven项目
对比一下俩张图,只需在pom文件类要把name,id,版本对应,在引用远程仓库地址即可使用 代码
<dependencies>
<dependency>
<groupId>com.lijie</groupId>
<artifactId>lijie-core-boot</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>mayikt</id>
<url>http://120.77.0.58:8081/repository/boot-tool/</url>
</repository>
</repositories>
复制代码
这就是我引入的jar包