基于Docker搭建Maven私服

前言

在大型互联网公司,都会在公司内部部署自己公司独立的Maven私服(只能公司内部访问),Maven私服作用可以管理微服务接口发布、第三方Jar包管理等;最近有空去网上找了些资料自己研究了下,并记录下来。

Maven私服应用场景
1. 微服务接口发布:

        微服务开发中,实现对微服务接口发布。比如Dubbo项目中,订单系统需要调用支付系统的接口,这时你需要支付接口的源码。正常开发中不会直接引入其接口项目,而是仅引入接口jar包进行调用,这时就可以把支付系统的接口jar包打包到Maven私服中,订单系统只需要引入支付接口jar包的依赖,即可将其从Maven私服中引入项目中,便可对订单系统进行调用。
总结:简单的说就是服务提供者将服务接口打包上传到Maven私服,消费者通过Maven依赖下载对应接口jar包。

2. 第三方Jar包管理(缓存企业级jar):

Maven仓库中没有的jar包或公司内部使用的jar包,我们可以手动将jar包打入本地仓库或Maven私服中。

结构图:

在这里插入图片描述


一、基于Docker搭建Maven私服

1. 下载一个nexus3的镜像
docker pull sonatype/nexus3
2. 将容器内部/var/nexus-data挂载到主机/root/nexus-data目录。
docker run -d -p 8082:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3

Maven私服启动容器稍微比较慢,等待1分钟即可。
默认登陆账号 admin 密码 admin123


二、创建Maven私服仓库

1. 访问管理页面 本机ip:8082 (本机ip为运行nexus的容器的主机ip),并登录

在这里插入图片描述

2. 创建私服仓库

一、点击设置按钮 – Repository – Create Repository
在这里插入图片描述
二、创建仓库,点击Create repository,然后选择maven2(hosted)然后输入仓库名称(test-release)。在version policy中选择这个仓库的类型,这里选择release,在Deployment policy中选择Allow redeploy(这个很重要).
在这里插入图片描述

3. 创建私服账号

点击左侧菜单栏的Users菜单,然后点击Create local user
在这里插入图片描述

三、将jar包上传到Maven私服

1. 配置Maven settings.xml

命令行执行 mvn -version 查看maven所在路径,找到Maven的settings.xml文件,在<servers>中添加如下配置;注意查看是否保存成功,笔者由于没有没有保存成功,导致打包上传jar包失败。

<servers>

	<!-- Maven私服配置 -->
	<server>
		<id>wangxu</id> <!-- id 也是用户名 -->
		<username>wangxu</username>  <!-- 用户名-->
		<password>123</password> <!-- 密码-->
    </server>
    
</servers>
2. 配置要上传项目的 pom.xml

注意:项目的限定版本一定为RELEASE,因为上传的对应仓库的存储类型为RELEASE ,如图:
在这里插入图片描述

打开要上传项目的pom.xml文件,添加如下配置:

  • 根标签<project>下添加仓库地址配置(也可以直接配置在settings.xml中,就不用每个项目都配置了)

     <project>  <--根标签-->
     
         <!--指定仓库地址 -->
         <distributionManagement>
             <repository>
                 <!--此名称要和.m2/settings.xml中设置的ID一致 -->
                 <id>wangxu</id>
                 <url>http://192.168.199.188:8082/repository/test_release/</url>
             </repository>
         </distributionManagement>
    
    </project>
    
  • <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>
    
3. 使用mvn deploy命令打包上传到Maven私服仓库

进入项目跟目录,打开dos窗口执行mvn deply 命令打包上传
在这里插入图片描述
进入nexus查看,此时已经有了上传的jar包
在这里插入图片描述


四、测试依赖信息,从Maven私服中获取jar包pom.xml添加:

新建Maven项目,在pom.xml添加依赖:

<dependencies>
	  <!--上传jar包的依赖信息-->
		<dependency>
			<groupId>com.example</groupId>
		 	<artifactId>jekins</artifactId>
			<version>0.0.1-RELEASE</version>
		</dependency>
</dependencies>

配置Maven私服仓库地址:

<repositories>
		<repository>
            <!--此名称要和.m2/settings.xml中设置的ID一致 -->
            <id>wangxu</id>
            <url>http://192.168.199.188:8082/repository/test_release/</url>
        </repository>
</repositories>



五、如何判断文件是否发生改变 (防篡改)

如何知道一个文件是否改变了呢?
当然是用比较文件hash值的方法,文件hash又叫文件签名,文件中哪怕一个bit位被改变了,文件hash就会不同。
比较常用的文件hash算法有MD5和SHA-1。


私服上的文件签名:
在这里插入图片描述

下载jar包到本地仓库,也有这个文件:
在这里插入图片描述
打开比较,我们发现是一致的:
在这里插入图片描述

-------------------------------------------------- 学习不易,需要坚持 ----------------------------------------------------------

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值