docker搭建maven私服(nexus3),整合springboot上传下载依赖

news2024/11/20 9:28:58

一、前言

我们在JavaWeb开发中必不可少的就是jar包管理-maven,在没有maven之前,都是自己手动下载jar包导入到项目中,非常的繁琐。

maven出现之后,又迎来新的问题,对于仓库里人家发布的都可以引用下载,但是公司自己内部写的jar包,不想让外人看到,自己公司来回粘贴复制,非常的繁琐,版本维护起来也是十分头疼!

这时Nexus Repository出现了,现在主流的还是nexus3,所以今天小编带大家一起搭建使用一下。当然公司也必须有一个自己的私服,来存放公司的技术沉淀,提高开发效率!

网上教程看了很多,但是基本都是教怎么上传到私服,从私服拉取依赖就没有写!

本文从上传到拉去面面俱到,对你有帮助,一键三连哈!!

二、介绍

官网地址

nexus3是一种特殊的远程仓库,一般部署在公司服务器或者局域网内的仓库服务,私服代理广域网上的远程仓库,供公司的Maven用户使用。

当Maven依赖需要依赖的时候,它从私服请求,如果私服上不存在依赖,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。

我们还可以把一些无法从外部仓库下载到的构件上传到私服上。

总的准则:无论私服有没有,我们本地都是使用私服提供的!

三、优点

  • 引入速度提高
  • 加速Maven构建
  • 方便管理
  • 稳定性高
  • 降低中央仓库的负荷
  • 隐私性高

四、docker构建运行

1. 创建挂载目录

mkdir /mydata/nexus/nexus-data -p

给权限:

chmod 777 /mydata/nexus/nexus-data/

2. 启动nexus

docker run -d -p 8081:8081 --name nexus -v /mydata/nexus/nexus-data:/nexus-data sonatype/nexus3

3. 获取密码

我们看到密码可以在容器内获取:

默认用户是,唯一生成的密码可以在卷内的文件中找到。有关卷的信息,请参阅持久数据。
admin admin.password

由于我们挂载了数据文件,主要在宿主机上查看即可!

切换到目录:

cd /mydata/nexus/nexus-data/

查看密码:

cat admin.password

密码:206d5b6b-cc58-403f-af03-e5c8772a803a

在这里插入图片描述

3. 访问页面

ip+端口访问:http://192.168.239.132:8081/

在这里插入图片描述

4. 登录

用户:admin
密码:挂载目录下的admin.password文件内

在这里插入图片描述

五、nexus配置和解释

1. 继续初始化

在这里插入图片描述

2. 编写新密码

在这里插入图片描述

3. 配置匿名访问

由于匿名访问有安全性问题,在公司不是还是禁用为好!

在这里插入图片描述

4. 完成

在这里插入图片描述

5. 仓库名称类型

在这里插入图片描述

我们可以看到有三种类型:

仓库类型说明
proxy代理到远程仓库,默认国外,可以修改为国内阿里云代理
group存放:通过 Nexus 获取的第三方 jar 包
hosted存放:本团队其他开发人员部署到 Nexus 的 jar 包

还有一些仓库名称:

仓库名称说明
maven-centralNexus 对 Maven 中央仓库的代理
maven-publicNexus 默认创建,供开发人员下载使用的组仓库
maven-releasseNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 releasse 版本(生产版本)
maven-snapshotsNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库要求 snapshots 版本(测试版本)

6. 调整代理地址

点击maven-central进入详情:

把代理地址换为阿里云的:
https://maven.aliyun.com/repository/public

往下滑到最后点击保存!

在这里插入图片描述

7. 新建用户和仓库

关于很多教程都是新建用户和仓库,小编这里就使用admin和自带的仓库了!
一般的小公司够了,公司有一定规模在新建吧!!

六、settings.xml配置

1. 配置maven上传信息

我们打开本地的settings.xml文件,把私服的地址和用户配置上去!

<servers>
  <server>
    <id>maven-public</id>
    <username>admin</username>
    <password>123456</password>
  </server>
  <server>
    <id>maven-snapshots</id>
    <username>admin</username>
    <password>123456</password>
  </server>
  <server>
    <id>maven-releases</id>
    <username>admin</username>
    <password>123456</password>
  </server>
</servers>

2. 配置从私服下载

 <profiles>
    <profile>
        <id>nexus-own</id>
        <!-- 远程仓库列表 -->
        <repositories>
            <repository>
                <id>maven-public</id>
                <name>Nexus Central</name>
                <!-- 虚拟的URL形式,指向镜像的URL-->
                <url>http://192.168.239.132:8081/repository/maven-public/</url>
                <layout>default</layout>
                <!-- 表示可以从这个仓库下载releases版本的构件-->
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
            <repository>
                <id>maven-snapshots</id>
                <name>Nexus Central</name>
                <!-- 虚拟的URL形式,指向镜像的URL-->
                <url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
                <layout>default</layout>
                <!-- 表示可以从这个仓库下载snapshot版本的构件 -->
                <releases>
                    <enabled>false</enabled>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>maven-public</id>
                <name>Nexus Central</name>
                <url>http://192.168.239.132:8081/repository/maven-public/</url>
                <releases>
                    <enabled>true</enabled>
                </releases>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>
<activeProfiles>
    <!--需要激活 <profile>中的ID才生效-->
    <activeProfile>nexus-own</activeProfile>
</activeProfiles> 

七、springboot项目配置

1. 父项目pom文件

	<build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <layers>
                            <enabled>true</enabled>
                        </layers>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <parameters>true</parameters>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <!--打包上传maven私服-->
    <distributionManagement>
        <repository>
            <!--id的名字可以任意取,但是在setting文件中的属性<server>的ID与这里一致-->
            <id>maven-releases</id>
            <!--指向仓库类型为host(宿主仓库)的储存类型为Release的仓库-->
            <url>http://192.168.239.132:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <url>http://192.168.239.132:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

2. deploy上传私服

双击deploy,上传私服!
在这里插入图片描述

3. 私服查看

在这里插入图片描述
一共上传了两次,都在私服中存在!

在这里插入图片描述

4. 私服依赖在本地引用

我们新建一个springboot项目,然后引入依赖:

要勾选Projects下面的配置,不然无法引入依赖!

在这里插入图片描述

5. 测试使用

新项目可以使用依赖中的注解:
在这里插入图片描述

八、总结

经过半天的测试加编写,终于完成,对于私服有了更深的认识!

私服是每个公司必须要有的,当然也是我们必须要掌握的,小编整理出来,方便大家学习!

优点前面都说了,这里就不多说了!


前人种树后人乘凉嘛,对你有帮助,还请不要吝啬你的发财小手点点关注哈!

关注小编的微信公众号,一起交流学习!文章首发看哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/159368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音视频面试基础题

编码原理 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?核心思想就是去除冗余信息&#xff1a; 1&#xff09;空间冗余&#xff1a;图像相邻像素之间有较强的相关性 2&#xff09;时间冗余&#xff1a;视频序列的相邻图像之间内容相似 3&#xff09…

CVPR21 - BasicVSR:简单有效的视频超分辨率Baseline

文章目录原文信息初识相知组件分析BasicVSRIconVSR部分实验回顾原文信息 原文链接 初识 相比于图像超分&#xff0c;视频超分(VSR&#xff0c;Video Super-Resolution)显然是一件更具挑战性的任务。视频超分比图像超分多了时间维度的信息、更为复杂&#xff0c;而在当时&…

结构体的声明使用及存储方式

文章目录 一、结构体的声明与使用 1、1 结构体的简单声明 1、2 结构体的特殊声明 1、3 结构体自引用 1、4 结构体变量的定义和初始化 1、5 结构体传参 二、结构体在内存中的存储方式 2、1 结构体在内存中的存储方式的引入 2、2 结构体的内存对齐 2、3 修改默认对齐数…

AcWing - 寒假每日一题2023(DAY 1——DAY 5)

文章目录一、AcWing 4261.孤独的照片&#xff08;简单&#xff09;1. 实现思路2. 实现代码二、AcWing 3400.统计次数&#xff08;简单&#xff09;1. 实现思路2. 实现代码三、AcWing 4366. 上课睡觉&#xff08;简单&#xff09;1. 实现思路2. 实现代码四、AcWing 3443. 学分绩…

程序员接私活最最完整攻略

接私活对于程序员这个圈子来说是一个既公开又隐私的话题&#xff0c;当你竭尽全力想要去接私活的时候一定做过这样的事情&#xff0c;百度搜索“程序员如何接私活”、“程序员在哪里接外包”等等问题&#xff0c;今天就送大家最完整攻略&#xff0c;千万别错过了。 做私活挣钱吗…

有趣且重要的Git知识合集(10)git stash操作

这种一般用于多分支&#xff0c;或者多人协同合作时会使用到的git命令 场景1&#xff1a; 当你在dev分支上写了很多代码&#xff0c;此时线上有bug&#xff0c;需要紧急在hotfix分支上修改&#xff0c;那直接git add提交又不太好&#xff0c;毕竟还没有开发完&#xff0c;那么…

JVM 学习笔记 内存结构

内存结构 程序计数器 作用&#xff1a;记录下一条JVM指令的执行地址 特点&#xff1a; 线程私有不存在内存溢出 虚拟机栈 每个线程运行时所需的内存称为虚拟机栈。每个栈由多个栈帧&#xff08;Frame&#xff09;组成&#xff0c;每个栈帧对应每次方法调用时占用的内存。每…

BIOS 的详细介绍

一、BIOS详解 对于不少新手&#xff0c;刷新BIOS还是比较神秘的。而对于一些BIOS相关的知识&#xff0c;不少人也是一知半解。在这里&#xff0c;我们将对BIOS作一次全面的了解。 1、什么是BIOS BIOS是英文"Basic Input Output System"的缩略语&#xff0c;直译…

NTN(三) Timing

微信同步更新欢迎关注同名modem协议笔记。这篇看下k_offset和k_mac&#xff0c;如38.300所述&#xff0c;k_offset是配置的调度偏移量&#xff0c;需要大于或等于service link RTT和Common TA之和&#xff1b;k_mac 是配置的偏移量&#xff0c;需要大于或等于 RP 和 gNB 之间的…

Chem. Eur. J.|针对细胞内靶点的环肽药物:肽药物发展的下一个前沿

​题目&#xff1a;Cyclic Peptides as Drugs for Intracellular Targets: The Next Frontier in Peptide Therapeutic Development 文献来源&#xff1a;Chem. Eur. J. 2021, 27, 1487 – 1513 代码&#xff1a;无&#xff08;环肽综述&#xff09; 内容&#xff1a; 1.简…

5-迷宫问题(华为机试)

题目 定义一个二维数组 N*M&#xff0c;如 5 5 数组如下所示&#xff1a; int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫&#xff0c;其中的1表示墙壁&#xff0c;0表示可以走的路&#xff0c;只…

通用模型切片处理过程 CesiumLab系列教程

我们前面把每种格式的模型参数设置已经讲解清楚&#xff0c;下面我们应该弄清楚通用模型切片剩下的流程&#xff0c;不管是人工模型&#xff0c;还是shp矢量面、bim模型&#xff0c;剩下的处理过程都是一样的&#xff0c;这里我们一起讲述。 资源库 ​通用模型处理分为两个过程…

基于JAVA的个人信息管理系统源码,含基于VUE的PC前端及移动端,用于管理个人消费、锻炼、音乐、阅读、健康、饮食等衣食住行信息

项目介绍 完整代码下载地址&#xff1a;基于JAVA的个人信息管理系统源码 用于管理个人消费、锻炼、音乐、阅读、健康、饮食、人生经历等各个衣食住行信息的系统&#xff0c;通过提醒、计划模块利用调度系统来统计分析执行情况。 并通过积分和评分体系来综合评估个人的总体状态…

【C++】类和对象【中篇】--C++六个默认成员函数以及const成员函数

文章目录一、类的6个默认成员函数二、构造函数1.概念2.特性2.1特征分析——自动生成2.2.特征分析——选择处理2.3特征分析——默认构造3.C11补丁——缺省值三、析构函数1.概念2.特征四、拷贝构造函数1.概念2.特征2.1引用分析——引用做参数2.2特征分析——深浅拷贝五、运算符重…

Clin Nutr | 浙大儿童医院-陈洁/倪艳揭示全肠内营养对儿童克罗恩病肠道菌群和胆汁酸代谢的影响...

全肠内营养对儿童克罗恩病肠道微生物群和胆汁酸代谢的影响The impact of exclusive enteral nutrition on the gut microbiome and bile acid metabolism in pediatric Crohns diseaseResearch article&#xff0c;2022年11月30日&#xff0c;Clinical Nutrition&#xff0c;7.…

Weblogic 任意文件上传漏洞(CVE-2018-2894)复现

目录 weblogic 漏洞环境准备 漏洞复现 修复建议 weblogic WebLogic是美国Oracle公司出品的一个application server&#xff0c;确切的说是一个基于JAVAEE架构的中间件&#xff0c;WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应…

Healthcare靶机总结

Healthcare靶机渗透总结 靶机下载地址: https://download.vulnhub.com/healthcare/Healthcare.ova 打开靶机,使用nmap扫描出靶机的ip和所有开放的端口 可以看到,靶机开放了21端口和80端口 21端口为ftp的端口,一般遇到这种,就可以考虑ftp的匿名登录,我们可以试一下 用户名anony…

【总结】华为、H3C、锐捷三家交换机配置命令详解

一直以来&#xff0c;对于华为、H3C、锐捷交换机的命令配置&#xff0c;不断的有朋友留言&#xff0c;三家交换机的配置命令容易弄混&#xff0c;经常在实际项目配置中出错&#xff0c;因此&#xff0c;本期我们将来介绍这三家交换机的基础配置命令&#xff0c;大家可以分别来看…

动手学区块链学习笔记(一):加密算法介绍

引言 本文根据实验楼以及自己查询到的一些资料&#xff08;文末给出&#xff09;&#xff0c;模拟了一下区块链从诞生到交易的整个过程&#xff0c;也算是弥补了一下之前区块链的一些缺失知识。 哈希加密原理介绍 什么是比特币&#xff1f; 比特币是一种加密货币&#xff0c…

【Python百日进阶-数据分析】Day223 - plotly瀑布图go.Waterfall()

文章目录一、语法二、参数三、返回值四、实例4.1 简单瀑布图4.2 多类别瀑布图4.3 设置标记大小和颜色4.4 水平瀑布图4.5 Dash中的应用一、语法 绘制瀑布轨迹&#xff0c;这是一种有用的图表&#xff0c;可以在条形图中显示各种元素&#xff08;正或负&#xff09;的贡献。y如果…