从零搭建Maven私有仓库

2023-11-08

前言

主要使用到的技术
linux、docker、sonatype nexus、maven
1)nexus3介绍
世界上第一个也是唯一一个免费使用的通用工件存储库。
2)使用docker安装nexus3

1、下载

使用命令:
docker pull sonatype/nexus3
在这里插入图片描述提示:可以去docker hub网站搜索对应的软件,然后确定自己安装什么。这样以后其他的docker命令就知道怎么写了

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、启动nexus3

编写启动脚本start.sh
docker run --name nexus -p 8081:8081 -v /Users/chuige/docker/nexus:/nexus-data --restart=always -d sonatype/nexus3

参数说明:
–name nexus #启动该容器的名字,可以自己更改为自己想要的名字
-p 8081:8081 #端口映射,将本地8081端口映射为容器的8081端口,第一个8081可以改成自己想要放开的端口
-v /docker/nexus/nexus-data:/nexus-data # 将容器的/nexus-data地址 代理到 本地/docker/nexus/nexus-data文件夹下
–restart=always #在重启docker时,自动重启改容器。
-d sonatype/nexus3 #即为后台运行一直sonatype/nexus3

如果路径未挂载,报错,You can configure shared paths from Docker -> Preferences… -> Resources -> File Sharing.
在这里插入图片描述
路径添加不了,则 您可以编辑 ~/Library/Group Containers/group.com.docker/settings.json .

{
“filesharingDirectories” : [
“/Users”,
“/Volumes”,
“/datadrive”,
“/private”,
“/tmp”
],
添加即可

如果还是报错,启动nexus时报错mkdir: cannot create direct

添加:–privileged=true 并赋予权限:chmod 777 /Users/chuige/docker/nexus

docker run --name nexus --privileged=true -p 8081:8081 -v /Users/chuige/docker/nexus:/nexus-data --restart=always -d sonatype/nexus3

docker logs -f nexus

在这里插入图片描述
如果你一直卡在启动的这一步,你不妨这样试一试:增大你的服务器配置,如果你原来为1核1G,那么你增大为2核4G以上在重新启动一下看看,可能有惊喜。

3、使用nexus3

http://127.0.0.1:8081
在这里插入图片描述
点击右上角,登录一下账号,账号admin,密码需要在/docker/nexus/nexus-data下的admin.password
进入docker:docker container exec -it 6c0061115092 bin/bash
如果报错:OCI runtime exec failed: exec failed: unable to start container process: exec: “bin/sh”: stat bin/sh: no such file or directory: unknow
换成命令 docker container exec -it 5fbab308bd14 /bin/sh

目录:/sonatype-work/nexus3/admin.password 中

我是一共创建了自己的三个repository。注意一下name和type
在这里插入图片描述
以下是我自己的理解:

proxy 代理仓库,主要是代理公共的远程仓库,比如ali的。
group 仓库组,主要是将仓库汇总,将自己的仓库,远程的仓库汇总起来,然后对外提供一个地址。我感觉就类似f5一样, 后续使用方,在maven的配置文件要加的
hosted 宿主仓库,理解为自己的仓库,主要用于公共的远程仓库没有的,或者自己的包。后续提供方,需要将jar推送到仓库的地址

3.1、创建proxy代理仓库

点击 create repository 。选择maven2(proxy)
在这里插入图片描述
然后输入仓库名称 和 代理的公共远程仓库地址即可
http://maven.aliyun.com/nexus/content/groups/public/
在这里插入图片描述

3.2、创建hosted 宿主仓库

点击 create repository 。选择maven2(hosted)
在这里插入图片描述
输入名称
在这里插入图片描述
更改控制是否允许构件的部署和更新 为Allow redeploy
在这里插入图片描述
点击最下面保存

3.3、创建group 仓库组

点击 create repository 。选择maven2(group)
在这里插入图片描述
输入名称,更改version pollcy为Mixed
在这里插入图片描述
将自己的代理仓库和宿主仓库加进来,最好宿主仓库在上面。优先从宿主仓库找,找不到再去代理仓库找。

在这里插入图片描述
点击最下面保存

4、提供方

现在假设我公司有一个工具类,好多个微服务都在使用,我不想把工具类每个系统都拷贝一份,这样也不利于后期的升级或者扩展。那我就把工具类弄成jar,然后上传到私服nexus3上。

4.1、修改maven配置文件

首先把本地maven的settings.xml文件更改一下。
添加一下私服的账号密码,id随便写,但是要和后面项目里的pom.xml中保持一致

gmaya
admin
123456

在这里插入图片描述
这一个是项目拉取jar的时候所使用的地址,仓库组里面已经包含公共远程仓库和私有的宿主仓库了。

  <mirror>
      <id>gmaya</id>
      <name>gmaya-public</name>
      <url>http://192.168.21.132:8081/repository/gmaya-public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>

在这里插入图片描述

4.2、修改pom.xml

每次更改以后版本号手动加一,http://192.168.21.132:8081/repository/gmaya-releases/ 这个地址一定要是咱们自己私服的宿主仓库,因为宿主仓库才是存放咱们自己jar的仓库。type为hosted。
id和settings.xml文件中的id保持一致

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>top.gmaya</groupId>
    <artifactId>top.gmaya.base</artifactId>
    <version>1.0.3</version>
    
   <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
    </dependencies>

    <distributionManagement>
        <repository>
            <id>gmaya</id>
            <name>gmaya-public</name>
            <url>http://192.168.21.132:8081/repository/gmaya-releases/</url>
        </repository>
    </distributionManagement>
</project>

4.3、编写工具类

写一个工具类demo

package top.gmaya.utils;

import java.util.UUID;

/**
 * 获取id工具类
 * @author GMaya
 * @dateTime 2022/4/8 20:48
 */
public class IdUtil {

    /**
     * 获取id
     * @author GMaya
     * @dateTime 2022/4/8 20:49
     * @return java.lang.String
     */
    public static String getId() {
        return UUID.randomUUID().toString().replace("-", "");
    }

}

在这里插入图片描述

4.4 打包上传到私服

可以直接利用工具的maven推送命令,点击idea项目左面maven,使用deploy命令,直接推送。
在这里插入图片描述
推送成功!

在这里插入图片描述
浏览器查看是否已经成功推送到私服nexus3上。
在这里插入图片描述

五、使用方

如果是同一个maven,那么settings.xml文件无需更改。
在项目pom.xml加入上面jar的maven坐标即可。其他的无需配置

   <dependency>
       <groupId>top.gmaya</groupId>
       <artifactId>top.gmaya.base</artifactId>
       <version>1.0.3</version>
   </dependency>

在这里插入图片描述

6、 总结

世上无难事只怕有心人,有问题解决问题,慢慢的就懂了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从零搭建Maven私有仓库 的相关文章

随机推荐

  • Windows10下载到U盘怎么安装?

    Windows10系统是目前主流的操作系统之一 很多用户把Win10系统下载到U盘后不知道怎么安装了 那么下面小编就给大家分享一下Windows10下载到U盘的具体安装教程 准备工作 1 U盘一个 尽量使用8G以上的U盘 2 在本页面下载U
  • 攻防世界-web篇(php_rce)详解

    每日一题 今天我们来攻防世界web篇 php rce 目录 1 利用system函数远程命令执行 2 查找文件目录 3 进入flag目录 4 查看flag文件拿到flag 首先打开题目 这里我们可以看到打开后是一个ThinkPHP V5的界
  • 【目标检测】1、基础内容

    文章目录 1 目标检测是什么 2 目标检测基础 2 1 候选框提取 2 2 特征提取 2 3 分类器 3 目标检测性能评估参数 4 NMS 非极大值抑制 4 数据集 新方法 RFCN Mask RCNN等 5 注意力机制 6 全卷积网络 F
  • GIS地理信息定位系统

    简介 地理信息系统 GIS Geographic Information System 是一门综合性学科 结合地理学与地图学以及遥感和计算机科学 已经广泛的应用在不同的领域 是用于输入 存储 查询 分析和显示地理数据的计算机系统 随着GIS
  • 学习笔记。张飞硬件设计视频1到23

    寒假在家学习 讲得很好 分享一下
  • 漫谈ELK在大数据运维中的应用

    圈子里关于大数据 云计算相关文章和讨论是越来越多 愈演愈烈 行业内企业也争前恐后 群雄逐鹿 而在大数据时代的运维挑站问题也就日渐突出 任重而道远了 本文旨在针对复杂的大数据运维系统推荐一把利器 达到抛砖引玉的效果 如果文中出现任何纰漏和错误
  • adfs服务器获取信息失败,在使用Fiddler或其他诊断工具时无法登陆到ADFS服务器

    在使用Fiddler或其他诊断工具时无法登陆到ADFS服务器 03 29 2016 2 分钟可看完 本文内容 问题描述 当使用Fiddler或其他诊断工具进行ADFS 排错时 用户从内部登录ADFS会反复弹窗要求进行身份验证 示例图如下 问
  • 教你一招永久去除WPS广告

    WPS的广告挺烦人的 一直以为无法去除 直到打开了配置工具 隐藏的够深的 首先打开WPS的配置工具 打开高级 选择其他选项 然后WPS广告的勾选项全部去掉
  • UbuntuServer虚拟机安装

    UbuntuServer虚拟机安装 目录 UbuntuServer虚拟机安装 环境 步骤 创建UbuntuServer虚拟机 UbuntuServer安装 环境 VMware Workstation Pro 15 1 0 Ubuntu Se
  • 【Spark NLP】第 2 章:自然语言基础

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • pycharm下载安装

    接下来安装pycharm 1 首先从网站下载pycharm 点击打开链接 链接为 http www jetbrains com pycharm download section windows 进入之后如下图 根据自己电脑的操作系统进行选择
  • Linux的介绍

    简介 主要介绍Linux的概念 Linux是一款操作系统 类似与Windows 开源 免费 安全 高校 稳定 非常擅长处理高并发 现在大多数企业级项目都是部署在Linux系统的服务器中运行 Linux的创始人是Linus 吉祥物是一只叫Tu
  • 深入理解Mysql索引底层数据结构与算法

    索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构对比 二叉树 左边子节点的数据小于父节点数据 右边子节点的数据大于父节点数据 如果col2是索引 查找索引为89的行元素 那么只需要查找两次 就可以获取到行元素所在的磁盘指针地
  • [labtools 27-2269]no devices detected on target localhost问题解决

    小白刚学FPGA 以流水灯为例入门 在连接板子的时候遇到了这个问题 记录一下 板子型号 xc7z045ffg900 2 解决办法之一 按照table 1 11更改图1 3里34位置处拨码
  • Linux系统中 systemd-journaldCPU占用异常的解决方法

    一 待解决问题 先贴几张图 问题解决之前最头疼的问题 因打印日志的高占用 以致CPU占用高达96 已经无法满足日常使用 从图中可见systemd journald占用了1 4的CPU资源 注 我是用的是Deepin系统 二 解决办法 因为要
  • SpringBoot2.x 集成Hadoop3.0.3 实现HDFS文件系统管理

    任务要求 搭建SpringBoot 2 x 集成Hadoop3 0 3环境 实现Hadoop 重要组成部分HDFS 文件系统管理的封装 核心pom xml 文件
  • vSphere之vCLS

    vCLS vSphere Cluster Services 是在vSphere7 0U1引入的集群服务 它使用代理虚拟机维护集群服务的运行状况 当主机添加到集群时 将创建 vCLS 代理虚拟机 vCLS vm 每个 vSphere 集群中最
  • Dell工作站8T硬盘安装ubuntu 16.04

    Dell工作站8T硬盘安装ubuntu 16 04 MBR文件系统仅支撑2T磁盘 因此在2T以上磁盘上安装ubuntu时 如果想利用全部磁盘空间 需要采用GPT分区 文件系统 模型 这需要重新分区 制作Ubuntu 16 04启动U盘 一
  • js-语言基础进阶-变换按钮的实现

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 16天
  • 从零搭建Maven私有仓库

    前言 主要使用到的技术 linux docker sonatype nexus maven 1 nexus3介绍 世界上第一个也是唯一一个免费使用的通用工件存储库 2 使用docker安装nexus3 1 下载 使用命令 docker pu