私服搭建,一篇就够

2023-11-10


前言

首先我们先来了解一些基本的概念,再来学习搭建。

什么是私服?

首先我们先了解maven的获取顺序,如下图所示:
maven获取jar执行流图

当我们需要获取mavenjar包的时候,就会先在本地区获取,如果没有就一层一层先上去获取。

而我们的私服就是代理仓库这一层

优势

  • 节省网络带宽
  • 下载更加稳定
  • 如果有内部组件库,可以方便使用
  • 提高项目稳定性

为什么要用私服?

场景描述:当我们在项目开发中,希望使用其他的项目的巩固,如果将这个项目内的内容拷贝到其他项目就会赵成项目的冗余并且如果这个项目是保密性的,是不能对外开放的。

那么基于以上原因,我们就需要搭建自己的私服,通过我们自定义的GAV坐标,将我们自己开发的项目上传到maven私服中,这样别人也可以使用我们自己编写的项目了。

  • 有一个开源项目公司正在使用,但是处于业务,需要针对这个项目进行二次开发,我们不能直接使用maven中央仓库依赖了,此时可以将二次开发的项目上传到公司内部使用。
  • 使用私服来加快我们搭建项目的速度。

如何用?

上面了解了基本使用概念,那么下面就开始详细介绍如何去下载,这里我就直接用一条docker命令来解决安装问题了。

下载安装

内存条件:这里在我看配置的时候,需要大概2g的内存启动内存,当然这个内存是可以调整的,这里参考我的另外一篇文章Docker设置启动大小 ,如果私服实在没有那么大的内存,就会出现启动不成功。

命令:

docker run --detach -p 8081:8081 --name nexus sonatype/nexus3

这里拉取的配置就是使用的最新的nexus3,可以的话就访问自己的网址,默认端口是:8081
修改自己的连接:http://ip:8081
maven私服启动页面

启动配置

登录
首先我们需要点击右上角登录,这里我们第一次登录不知道密码,就需要去docker中去查看。

查看自己的启动内容

[root@VM-0-2-centos ~]# docker ps -a
CONTAINER ID   IMAGE                                                 COMMAND                   CREATED        STATUS                      PORTS                                           NAMES
c4154924a227   sonatype/nexus3                                       "sh -c ${SONATYPE_DI…"   25 hours ago   Up 25 hours                 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp       nexus
# 进入容器内部
docker exec -it c4154924a227 /bin/bash

bash-4.4$ cat /nexus-data/admin.password
# 下面显示的内容就是第一次登录的密码
password

复制password,到登录页面输入即可

然后上面我们登录之后,就可以再一次的修改密码了。

内部仓库定义

nexus默认已建好4个库,简单解析下各个库的作用

  • maven-central 默认配好的中央仓库,指向https://repo1.maven.org/maven2/,然后就需要我们去修改为阿里云的仓库地址
  • maven-releases 一般用于自己存放自己开发项目的稳定版本,默认不能重复发布,即deploy,可以设置为允许重复deploy
  • maven-snapshots 一般用于存放自己开发项目的快照版本,默认允许重复发布
  • maven-public 组合库,一般是组合以上三种库,通常在项目中配置这个仓库

仓库类型说明

  • group:仓库聚合,默认是releases>snapshots>central,可以在仓库管理界面引入其他配置的库,并设置顺序
  • hosted:私有仓库,存放自己开发的jar
  • snapshots:本地项目的快照仓库
  • releases: 本地项目发布的正式版本
  • proxy:代理类型,可以配置aliyun的仓库
  • central:中央仓库

配置远程仓库

击create 仓库,来创建,然后下面我们自己设置自己的仓库内容
内部页面
进入到仓库类型这里就选择下面这个
仓库类型选择
然后我们在进入到:maven-public中
配置定义好的仓库

将我们最新添加的aliyun仓库添加到最上面即可。如下图
添加配置

上传jar包

完成上面的配置之后,就可以上传写好的jar包了,下面我们就能使用。

  • 修改一份自己的setting.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>/Volumes/config/maven/apache-maven-3.5.4</localRepository>

    <servers>
        <server>
            <id>nexus</id>
            <username>账号</username>
            <password>密码</password>
        </server>
    </servers>
    
    <mirrors>
        <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://ip:8081/repository/maven-releases//</url>
            <!-- <url>http://repo1.maven.org/maven2/</url> -->
        </mirror>
    </mirrors>
</settings>
  • 在pom中添加内容
<distributionManagement>
    <repository>
        <id>nexus</id>
        <name>Nexus Releases Repository</name>
        <url>http://ip:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>nexus</id>
        <name>Nexus Snapshot Repository</name>
        <url>http://ip:8081/repository/maven-repository/</url>
    </snapshotRepository>
</distributionManagement>

需要注意的是这里的id都需要统一,然后点击部署,即可发布成功
pom定义

  • 如果有- 新的大版本需要更新就需要去修改下面这个位置
    <version>2.0-RELEASES</version>
    再次安装上面的步骤进行重新部署,我们就会得到两个版本。
    maven私服选择

使用

如果我们需要使用上面的依赖,就需要我们配置maven,选择我们需要的setting.xml,然后在引入相关依赖,这个依赖我们在maven私服中去查看
私服选择

添加到自己的maven中就完成了我们的引入依赖使用

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

私服搭建,一篇就够 的相关文章

  • 如何创建约束输入流以仅读取文件的一部分?

    我想创建一个仅限于文件中一定范围的字节的输入流 例如从位置 0 到 100 的字节 这样 一旦到达第 100 个字节 客户端代码就应该看到 EOF The read 的方法InputStream一次读取一个字节 你可以写一个子类InputS
  • 获取 get 或 post 请求的响应的响应字符集

    我正在努力在 java web 应用程序中提取响应字符集 我在其中使用 Apache HTTP 客户端 例如 从 Content Type 标头获得的一个可能值是 text html charset UTF 8 然后我的代码将提取 符号之后
  • Android 相机:线程?哪个应该做什么

    我试图弄清楚哪些线程应该在 Android 中执行哪些操作 我发现官方文档中唯一说明的是camera open 应该放入它自己的线程中 关于什么 camera startPreview camera stopPreview camera r
  • 使用现有同级属性值对属性进行 Jackson 多态反序列化

    我有一个现有的Request Response协议使用JSON我无法控制 示例1 响应JSON不需要任何多态反序列化 name simple response params success true 示例2 响应JSON需要对 params
  • 抽象数据类型和接口

    抽象数据类型和接口有什么区别 例如我们有一个ListADT interface MyListADT
  • 如何测试两个 Joda-Time DateTime 对象几乎相等?

    在单元测试中 我经常使用返回DateTime于或关于now 有没有办法说actual日期时间在几秒之内actual约会时间 这听起来是个坏主意 单元测试不应该以任何方式依赖于当前的实际时间 这就是为什么注入一些接口是一个很好的做法 称为Cl
  • 无法将环境变量传递给 docker

    我正在尝试使用环境变量运行 docker 映像 但它对我来说不起作用 无论是使用 env list 文件还是通过命令行 docker run p 49160 8080 d appname e FOO foo 来自守护程序的错误响应 OCI
  • 如何使用 DirectoryStream.Filter 过滤隐藏文件

    我正在尝试使用 NIO 类过滤隐藏文件 当我在 Windows 10 上运行随附的代码时 我得到以下输出 Files c Documents and Settings c PerfLogs c Program Files c Program
  • 使用具有不同参数的 Jackson for List 将 JSON 映射到 pojo

    JSON 格式 0 cast showname woh pagle type Episodes video src video mp4 DRM False 这里的问题是我遇到以下异常 org codehaus jackson map Jso
  • 如何解决Spring Data JPA中的N+1问题?

    我使用 Spring Data JPA 作为持久层 并且面临 N 1 问题 我还使用规范 API 因为我发现很难解决 N 1 问题 请帮忙 Entity public class PopulationHealth Id private in
  • 在 IntelliJ IDEA 中编辑并继续?

    使用 IntelliJ IDEA 社区版进行调试时是否可以编辑一些代码 我在选项中找不到这个功能 是的 这就是所谓的 热插拔 您可以在调试过程中编译修改后的代码 并且类文件将被替换 直到您停止调试 确保在调试器设置中启用 HotSwap 选
  • Unwrap 当使用 Collectors maxBy 和 groupingBy 时可选

    我有一堂课 有一个String and an int field public class Data private String name private int value private Data String name int va
  • Jackson - 将值传递给 JsonDeserializer

    我有一个现有的类层次结构 如下所示 public interface Service String getId String getName public class FooTask extends AbstractTask private
  • 如何同时运行两个FOR循环

    我正在使用加速度计 第一个代码是振动检测器 代码1 if sensor SensorManager SENSOR ACCELEROMETER long curTime System currentTimeMillis long now Sy
  • 查看tomcat服务器的连接数

    我在 Tomcat Server 5 5 17 上部署了一个 Java Java EE Web 应用程序 我想知道连接到服务器的客户端数量 我们怎样才能找到它呢 最可靠的方法是搜索ip addr of srv port in netstat
  • 全屏 Swing 组件无法在 Mac OS X Mountain Lion 上的 Java 7 上接收键盘输入

    12 21 更新 7u10 最近发布 确认 问题仍然存在 值得庆幸的是 解决方法仍然有效 11 7 更新 我们有一个解决方法 来自 Oracle 的 Leonid Romanov 在 openjdk java net 邮件列表上提供了一些关
  • Android Widget 实现

    嗨 如果这个问题很愚蠢 我提前道歉 我对 Android 编程相当陌生 而且学得很快 我刚刚创建了一个任务提醒应用程序 并且想将该应用程序转换 实现为一个可以在主屏幕上查看的小部件 有什么方法吗 这可能吗 Thanks 如果没有更多关于您的
  • Java 中使用 PBKDF2 进行密码验证

    我正在用 Java 进行基于密码的文件加密 我使用 AES 作为底层加密算法PBKDF2WithHmacSHA1使用以下代码从盐和密码组合中派生密钥 我从本网站上的另一位慷慨的海报获得 SecretKeyFactory f SecretKe
  • JShell 如何查找变量或结果的类型

    如何在 JShell 中查找变量或表达式结果的类型 正在尝试 Java 中的按位运算符 jshell gt byte b 5 lt lt 1 Error incompatible types possible lossy conversio
  • 为什么 java.io.File 没有 close 方法?

    While java io RandomAccessFile确实有一个close method java io File没有 这是为什么 文件在完成时会自动关闭吗 javadoc 的Fileclass 将该类描述为 文件和目录路径名的抽象表

随机推荐

  • Seaborn5分钟入门(六)——heatmap热力图

    微信公众号 Python读财 如有问题或建议 请公众号留言 Seaborn是基于matplotlib的Python可视化库 它提供了一个高级界面来绘制有吸引力的统计图形 Seaborn其实是在matplotlib的基础上进行了更高级的API
  • 假设检验笔记

    假设检验 就是做了一个假设 H 然后通过实验得到相关的统计数据判断 H 是否 大概率 成立 或者有多大把握认为 H 成立 这个 H 一般是一个与分布 统计量相关的的命题 如 H P 硬 币 朝
  • 图片即时优化的三种简单解决方案

    本文要点 Web页面中的图片往往是页面加载缓慢的最主要原因 图片优化很复杂 涉及大小调整 裁剪 格式转换及质量参数微调 如今 有的云服务可以即时优化图片 极大地改善用户浏览包含图片的Web页面时的体验 云服务提供了简单的API用于操作图片
  • 200. 岛屿数量-Java

    文章目录 200 岛屿数量 https leetcode cn com problems number of islands 题目概述 算法思路 1 深度优先搜索 代码实现 复杂度分析 2 广度优先搜索 分离行与列的方法 代码实现 复杂度分
  • 产品推介

    基线检测服务 正式发布 产品概述 在用户充分授权的情况下 对用户云上系统进行全面的安全基线检测 帮助用户掌握云上系统整体的安全脆弱性状况 并依据检测结果与用户业务模式特点 提供有针对性的安全修补建议 降低系统的安全威胁 漏洞扫描服务 正式发
  • Yule-Walker方程

    零化滤波器的来源 在有限新息率中 参数的估计问题可以转化为谱估计问题 而谱估计问题可以采用零化滤波器算法去解决 其核心在于 z z z变换和Yelu Walker方程的求解 这篇博客重点讲一下Yelu Walker方程的求解 Yelu Wa
  • 毕业设计--基于深度学习的常见苹果叶片病害识别与病斑分割方法研究

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精力 近几年各个学校要求的毕设项目越来越难 有不少课题是研究生级别难度
  • 【C语言】使用C语言编写对密码强度的检测,检测出结果:弱、中等、强

    可以使用 C 语言编写一个函数来检测密码强度 以下是一个简单的实现 include
  • 动态规划之背包问题

    本文有视频版 0 1背包问题详解 后台天天有人问背包问题 这个问题其实不难啊 如果我们号动态规划系列的十几篇文章你都看过 借助框架 遇到背包问题可以说是手到擒来好吧 无非就是状态 选择 也没啥特别之处嘛 今天就来说一下背包问题吧 就讨论最常
  • 博客之星规则能否参照“金球奖”

    文章目录 课前小差 粉丝对我的价值 粉丝数量的提升 KOL与粉丝链接 粉丝影响收入 博客之星规则设想 博客之星新玩法 内部评审 展望2023 写在最后 课前小差 哈喽 大家好 我是几何心凉 这是一份全新的专栏 唯一得倒CSDN王总的授权 来
  • drop与delete的区别

    drop与delete的区别 drop主要用于删除结构例如删除数据库 drop database XX 删除表 drop table XX 字段也是结构的一种 也可以使用drop了 对的 但是我们改变了表结构要先alter方法 例如 我们要
  • vSphere Client(Vcenter)上传ISO镜像

    不少新手在ESXi上安装好虚拟机后 都要寻找浏览器的ios镜像 但同学们会在这里卡顿 找不到上传ios的路径 今天就来讲一讲 上传的问题 一 方法一 我初学时 一样在这里卡顿 找不到上传的路径 在网上搜索 确实找到了一种上传的方法 在这里转
  • keil编译后.c文件前面没有+号

    如下图 程序的 c文件前面没有 号 已经在show include file dependencies前面打勾了 看到下面的提示是编译出问题了 点击魔术棒 在Target Code Generation里面选择默认的编译器 然后重新编译 发
  • 三维目标检测新SOTA---ADFDetV2论文解读

    问题 本文提出了一种单阶段的三维目标检测算法 并在文中分析了二阶段三维目标检测算法的不必要性 其所提算法在waymo实时目标检测竞赛中取得了第一的成绩 其性能超过了所有单阶段和多阶段的目标检测算法 作者首先分析了二阶段目标检测算法主要有两个
  • LinuxC——分支语句

    在C程序中 我们经常会根据一个表达式的结果来执行不同的操作 这个时候我们就需要用到分支语句 本篇博客将介绍几种分支语句 一 if 语句 if语句的通用形式 if expression statement if语句的用法 首先对express
  • 我的第一个博客

    2018 10 13 16 00 54 注册了开源中国账号 这是我的第一篇博客 以下为收集来的网站 感谢原博主 原文 https blog csdn net X 1875 article details 80932618 utm sourc
  • Win32简单学习

    文章目录 win32常用调试方法 消息循环阻塞 窗口类型风格 绘图 菜单 多线程 原子操作 互斥 事件 信号量 win32常用调试方法 include
  • 自制操作系统(一)

    从今天开始制作一个操作系统 今天完成最基本的功能 输出hello world 计算机在读取磁盘的时候 首先从最初的一个扇区开始读盘 然后如果这最后2个字节不是55AA 计算机会认为这张盘上没有所需启动程序 就会报一个不能启动的错误 如果计算
  • python对文件的操作(一)序列化和反序列化

    1 文件操作 1 1 文件操作的流程 1 打开文件 得到文件句柄并赋值给变量 2 通过句柄对文件进行操作 3 关闭文件 1 2 从文件中读取数据 要使用文件中的信息 首先需要将信息读取到内存中 为此 那你可以一次读取文件的所有内容 也可以每
  • 私服搭建,一篇就够

    maven私服搭建 从部署到java项目使用 前言 什么是私服 优势 为什么要用私服 如何用 下载安装 启动配置 查看自己的启动内容 内部仓库定义 仓库类型说明 配置远程仓库 上传jar包 使用 前言 首先我们先来了解一些基本的概念 再来学