内网服务器部署maven私服简记

前言

很多企业希望创建自己的maven私服,但服务器无法和外网连通,所以这里介绍一套完整的内网部署nexus的解决方案。实现的方式也很简单,将下载好的nexus安装和项目所需的依赖仓库都上传到服务i去上去,通过脚本的方式实现批量导入即可确保企业项目的依赖完全可以基于内网的nexus进行导入。

补充一下,如果你对nexus还不算熟悉,可以看看笔者的这两篇文章:

基于Nexus搭建Maven私服基础入门

基于自动化脚本批量上传依赖到nexus内网私服

部署过程

上传nexus到服务器

nexus的下载地址为https://help.sonatype.com/repomanager3/product-information/download/download-archives—repository-manager-3

考虑到当前服务器GLIBC比较老,而且升级可能存在风险,所以经过实验,笔者选择了3.5.2-01版本。

在这里插入图片描述

完成下载后笔者通过mobaxterm将nexus的Linux安装上传到服务上。

在这里插入图片描述

解压并配置nexus

然后我们就可以开始解压安装了,首先到达nexus目录,键入下面的命令完成解压。

tar -zxvf nexus-3.5.2-01-unix.tar.gz

为了保证nexus文件夹更加直观,笔者这里对其进行重命名。

mv nexus-3.5.2-01 nexus

最终文件夹如下图所示:

在这里插入图片描述

nexus默认端口为8081,这个端口号在算是比较常用的端口,所以我们这里修改一下nexus端口号,所以我们到nexus文件夹的etc目录下修改配置。

cd nexus/etc/

etc目录下有下面这些文件,我们使用vi编辑一下nexus-default.properties

[10:05:48 xxx:~/nexus/etc]$ ll
▒ܼ▒ 24
drwxrwxr-x 2 xxx xxx 4096 05-05 10:02 fabric
drwxrwxr-x 2 xxxx xxx 4096 05-05 10:02 jetty
drwxrwxr-x 3 xxxx xxxx  4096 05-05 10:02 karaf
drwxrwxr-x 2 xxxx xxxx 4096 05-05 10:02 logback
-rw-r--r-- 1 xxxx xxxx 383 2020-10-02 nexus-default.properties
drwxrwxr-x 2 xxxx xxxx 4096 05-05 10:02 ssl
[10:05:49 xxxx :~/nexus/etc]$

编辑命令如下

vi nexus-default.properties

以笔者为例,将端口号改为18081,完成后点击wq退出。

在这里插入图片描述

nexus需要jdk8,很多企业的服务器的环境变量可能不是jdk8,所以这里介绍启动无需设置修改环境变量就能正常启动nexus的方法。

我们可以编辑nexus的bin目录下的nexus这个文件

vi nexus

如下图所示,将INSTALL4J_JAVA_HOME_OVERRIDE设置为服务器中的jdk8地址即可。

在这里插入图片描述

前台启动nexus

因为是第一次配置,可能会存在某些报错,保守起见我们先将nexus前台启动以便排查问题,我们到达nexus的bin目录。键入下面这段命令:

./nexus run

稍等片刻,随着控制台输出下面这段信息,就说明nexus启动成功了。

在这里插入图片描述

我们不妨键入网址,网址地址也很简单,即服务器ip+刚刚配置的端口号。

http://xxxx:18081

如果可以看到这个页面,就说明nexus部署初步完成了,接下来我们就可以进入配置页面了。

在这里插入图片描述

配置nexus仓库

这里补充说明一下,我们接下来的步骤最终会完成一个组合仓库的创建,这个组合仓库会有下面3个子仓库:

  1. 项目所虚依赖库。
  2. 项目发布版本库。
  3. 项目快照版本库。

所以这一步我们按照说明完成3个仓库的配置。

首先点击登录,默认情况下nexus账户/密码为:admin/admin123

在这里插入图片描述

输入完成之后,我们就进入这个页面,可以看到设置的logo出现的导航栏。

在这里插入图片描述

我们点击设置的logo,点击仓库,点击创建仓库,创建一个项目所需依赖的仓库。

在这里插入图片描述

到达下一个页面时,我们选择maven-hosted。

在这里插入图片描述

然后按照下图提示创建仓库名称等配置信息。

在这里插入图片描述

完成后点击创建即可。

在这里插入图片描述

为了方便管理我们的仓库,我们还需要一个快照仓库和发布仓库,好在maven有自带这个仓库,我们拿来改改配置就能用了。如下图,点击快照仓库进行配置修改。

在这里插入图片描述

将策略改为允许这样后续我们的jar包就可以上传到这个maven仓库了,完成后点击save即可。

在这里插入图片描述

发布仓库同理,修改后点击保存即可。

在这里插入图片描述

组合nexus仓库

后续我们的项目都是通过该私服进行依赖获取,而我们刚刚配置了三个仓库,我们希望对外暴露一个接口,依次从:自定义hosted->maven-release->maven-snapshots获取。

所以我们需要创建一个maven库组去组合这三个仓库。首先点击创建仓库

在这里插入图片描述

然后选择group,创建一个组合仓库去组合上面创建的3个仓库。

在这里插入图片描述

如下图,组合好依赖顺序后点击保存。

在这里插入图片描述

上传jar包并导入nexus

上文提到,由于仓库在内网中使用,所以我们必须确保私服中拥有我们所需要的依赖,所以我们会从本地开发环境将依赖导入服务器,如下图,笔者已经上传到服务器上了。

在这里插入图片描述

由于依赖比较多,所以我们希望编写一个脚本一键导入该依赖。所以我们在仓库文件夹内部编写一个脚本。

cd nexus-repository/
vim  mavenimport.sh

然后键入以下内容

#!/bin/bash
# copy and run this script to the root of the repository directory containing files
# this script attempts to exclude uploading itself explicitly so the script name is important
# Get command line params
while getopts ":r:u:p:" opt; docase $opt inr) REPO_URL="$OPTARG";;u) USERNAME="$OPTARG";;p) PASSWORD="$OPTARG";;esac
donefind . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;

然后为其分配可执行权限。然后键入下面这条命令(注意笔者的参数说明)

./mavenimport.sh -u nexus账户 -p nexus密码 -r 自定义hosted地址

以笔者为例,命令为

./mavenimport.sh -u admin -p xxxx-r http://xxxxx:18081/repository/xxxx-hosted/

完成后我们点击浏览,然后选择我们的仓库查看依赖是否导入了。

在这里插入图片描述

可以看到依赖都上来了,自此nexus初步配置算是完成了,我们可以开始测试了。

在这里插入图片描述

测试基本功能

我们不妨将本地项目的依赖都删除,然后通过这个maven库进行导入依赖。首先我们到nexus私服复制一下group的地址。

如下图所示,点击copy获取组合库的地址。

在这里插入图片描述

然后页面会弹出一串地址,我们将其复制

在这里插入图片描述

修改我面的maven,将镜像设置为我们的组合库

<mirror>  <id>nexus</id>  <name>nexus repository</name>  <url>http://192.168.xxx.xxx:18081/repository/xxxx-nexus/</url>  <mirrorOf>central</mirrorOf>  </mirror>   

如下图所示:

在这里插入图片描述

然后我们将本地仓库删除,打开项目查看是否可以正常导入,以笔者项目为例,可以看到所有依赖都是从私服拉取。

在这里插入图片描述

可以看到项目正常启动运行,自此maven私服搭建成功。

在这里插入图片描述

同样我们也可以编译一下看看,也是没有问题的。

在这里插入图片描述

上传企业项目到私服

需求说明

我们现在创建了一个名为test-nexus的maven项目,我们希望可以被团队其他成员用到,所以我们希望将其提交到nexus私服上面。

在这里插入图片描述

我们看看这个项目的版本,可以看到没有snapshots关键字,所以它是发布版,按照我们规范,我们应该将其提交到maven-released这个仓库中。

在这里插入图片描述

操作步骤

首先我们修改一下这个maven项目的配置,在pom文件中添加下面这段配置,可以看到这段配置将快照和发布仓库的地址都配置上去,让maven自动识别并将组件提交到对应仓库中。

<!--    如果是releases版本则传到releases对应的url,如果是snapshots则传到snapshots的url--><distributionManagement><repository><id>releases</id><name>Nexus Release Repository</name><url>http://ip:18081/repository/maven-releases/</url></repository><snapshotRepository><id>snapshots</id><name>Nexus Snapshot Repository</name><url>http://ip:18081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

提交组件到nexus时是需要认证的,所以我们需要到maven中添加上述标签对应id的仓库的账号密码。所以我们到对应的maven的servers标签中添加下面这段配置。

 <server><id>releases</id><username>admin</username><password>xxxx</password></server><server><id>snapshots</id><username>admin</username><password>xxxxx</password></server><server><id>nexus</id><username>admin</username><password>xxxx</password></server></servers>

配置如下图所示:

在这里插入图片描述

回到pom文件,如果我们希望自己的组件源码可以被开发下载,我们还需要添加下面这段配置。

<build><plugins><!--   要将源码放上去,需要加入此配置    --><plugin><artifactId>maven-source-plugin</artifactId><version>2.1</version><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build>

完整的pom文件配置如下图所示:

在这里插入图片描述

自此我们所有工作都准备完成了,我们可以直接点击clean在deploy

在这里插入图片描述

可以看到发布包传到发布仓库,并且成功了。

在这里插入图片描述

我们回到nexus查看,到管理界面找到组件点击发布仓库。

在这里插入图片描述

可以看到我们的组件成功上传上去了。

在这里插入图片描述

从私服下载自定义组件

需求说明

从maven下载自定义组件的方式也很简单,我们不妨就尝试通过私服下载上文的test-nexus。

操作步骤

找到我们的随便一个项目,在pom文件中引入这个组件的坐标

<dependency><groupId>com.sharkChili</groupId><artifactId>test-nexus</artifactId><version>1.0</version></dependency>

可以看到依赖成功引入了

在这里插入图片描述

我们也可以在项目中直接使用jar包中的类。

在这里插入图片描述

参考文献

解决Nexus 3.XX Jdk版本问题(亲测有效)

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

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

相关文章

MySQL和 Oracle查看表信息

在日常Mysql和Oracle数据库使用时&#xff0c;经常使用到查看表、索引等信息&#xff0c;记录下来&#xff0c;方便备查。 MySQL 主要是使用 information_schema 信息表&#xff1b; Oracle 主要是使用 各种视图&#xff0c;如user_ind_columns。 一、查看所有表 MySQL查看表…

CSS的三大特性(层叠性、继承性、优先级---------很重要)

CSS 有三个非常重要的三个特性&#xff1a;层叠性、继承性、优先级。 层叠性 场景&#xff1a;相同选择器给设置相同的样式&#xff0c;此时一个样式就会覆盖&#xff08;层叠&#xff09;另一个冲突的样式。层叠性主要解决样式冲突 的问题 原则&#xff1a;  样式冲突&am…

autojs-练手-视频号点赞(进阶版)

注释很详细&#xff0c;直接上代码 较初阶版新增内容 1. 简单但好用的ui界面 为方便大家参考&#xff0c;ui界面的模板单独拿出来了 ui界面模板 2. opencv图像识别 3. 需加载情况特殊处理&#xff08;防卡壳&#xff09; 4. 增加自动判断是否已点赞的情况 源码部分 // 启用…

HarmonyOS4.0从零开始的开发教程14Web组件的使用

HarmonyOS&#xff08;十二&#xff09;Web组件的使用 1 概述 相信大家都遇到过这样的场景&#xff0c;有时候我们点击应用的页面&#xff0c;会跳转到一个类似浏览器加载的页面&#xff0c;加载完成后&#xff0c;才显示这个页面的具体内容&#xff0c;这个加载和显示网页的…

智能优化算法应用:基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于水循环算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.水循环算法4.实验参数设定5.算法结果6.参考文…

拓扑排序实现循环依赖判断 | 京东云技术团队

本文记录如何通过拓扑排序&#xff0c;实现循环依赖判断 前言 一般提到循环依赖&#xff0c;首先想到的就是Spring框架提供的Bean的循环依赖检测&#xff0c;相关文档可参考&#xff1a; https://blog.csdn.net/cristianoxm/article/details/113246104 本文方案脱离Spring Be…

无需公网IP联机Minecraft,我的世界服务器本地搭建教程

目录 前言 1.Mcsmanager安装 2.创建Minecraft服务器 3.本地测试联机 4. 内网穿透 4.1 安装cpolar内网穿透 4.2 创建隧道映射内网端口 5.远程联机测试 6. 配置固定远程联机端口地址 6.1 保留一个固定TCP地址 6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 8.总…

Vue 中 v-model 的修饰符

lazy 修饰符&#xff1a;将 v-model 改为失去焦点后更新数据。 number 修饰符&#xff1a;将 v-model 数据转为数字类型。 trim 修饰符&#xff1a;去除 v-model 数据中的首尾空格。 语法格式&#xff1a; // lazy 修饰符 <input v-model.lazy"数据"> // nu…

靠谱的车- 华为OD统一考试(C卷)

靠谱的车- 华为OD统一考试&#xff08;C卷&#xff09; OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 程序员小明打了一辆出租车去上班。出于职业敏感&#xff0c;他注意到这辆出租车的计费表有点问题&#xf…

【JNA与C++基本使用示例】

JNA中java与C使用注意事项和代码示例 JNA关系映射表使用案列注意代码示例C代码java代码 JNA关系映射表 使用案列 注意 JNA只支持C方式的dll使用C的char* 作为返回值时&#xff0c;需要返回的变量为malloc分配的地址C的strlen函数只获得除/0以外的字符串长度 代码示例 C代码…

基于PaddleNLP的深度学习对文本自动添加标点符号(一)

前言 目前以深度学习对文本自动添加标点符号研究很少&#xff0c;已知的开源项目并不多&#xff0c;详细的介绍就更少了&#xff0c;但对文本自动添加标点符号又在古文识别语音识别上有重大应用。 基于此&#xff0c;本文开始讲解基于PaddleNLP的深度学习对文本自动添加标点符号…

WT2003H4-16S语音芯片:扭蛋机新潮音乐,娱乐升级无限

在扭蛋机的乐趣世界里&#xff0c;唯创知音的WT2003H4-16S语音芯片&#xff0c;作为MP3音乐解码播放IC&#xff0c;为扭蛋机带来了更智能、更富有趣味的音乐体验&#xff0c;为玩家打开了娱乐升级的无限可能。 1. 机启音乐&#xff0c;欢迎扭蛋之旅 扭蛋机启动时&#xff0c;…

鸿蒙开发之状态管理@Prop和@Link

一、用法 在父子组件需要进行数据同步的时候&#xff0c;可以通过Prop和Link装饰器来做到。在父组件中用State装饰&#xff0c;在自组件中用Prop或Link装饰。 结论&#xff1a;Prop用于子组件只监听父组件的数据改变而改变&#xff0c;自己不对数据改变 Link用于子组件与父组…

Proxmox VE 安装 OpenWrt 配置旁路由教程

话不多说&#xff0c;本篇文章将记录如何在 Proxmox VE 环境通过虚拟机安装 OpenWrt 配置旁路由的过程&#xff0c;仅做参考。 PVE 创建虚拟机 名称随意&#xff0c;GuestOS 选择 Linux&#xff0c;不使用任何 iso 镜像。&#xff08;记住你的 VMID&#xff09; 清空将要创建…

【Linux】CentOS部分命令

目录 1.文件处理命令2.文件查看命令3.目录查看命令 1.文件处理命令 &#xff08;1&#xff09;.创建文件 mkdir //创建文件夹 touch //创建文件 echo > filename //创建一个空文件 ↑↓ echo "" > filename …

机器学习---Adaboost算法

1. Adaboost算法介绍 Adaboost是一种迭代算法&#xff0c;其核心思想是针对同一个训练集训练不同的分类器&#xff08;弱分类器&#xff09;&#xff0c;然 后把这些弱分类器集合起来&#xff0c;构成一个更强的最终分类器&#xff08;强分类器&#xff09;。Adaboost算法本身…

C语言的第一个HelloWorld程序

相信进入编程世界的人&#xff0c;都知道入门的第一个程序是"Hello, World!"&#xff0c;那就怀念一下过去&#xff0c;给想入门你一点启发。 第一个C程序通常是打印"Hello, World!"&#xff0c;用于演示C语言的基本语法和结构。 #include <stdio.h&g…

Qt 线程

&#x1f4a1; 进度条显示拷贝进度&#xff08;verson 1&#xff09; 窗口上放置一个按钮和一个进度条部件&#xff0c;点击按钮&#xff0c;进行拷贝操作 —— 打开对话框选择源文件&#xff0c;然后再打开一个对话框 选择 目标文件存放位置和名称。拷贝过程中进度条显示当前…

十三、YARN资源分配调用

1、为什么要先学习YARN组件&#xff1f; 在Hadoop文件系统中&#xff0c;YARN作为Hadoop系统的第三大组件&#xff0c;其中&#xff0c;第二大组件MapReduce组件是基于YARN运行的&#xff0c;即没有YARN无法运行MapReduce程序&#xff0c;所以需要同时学习YARN。 2、YARN &…

使用elasticsearch-dump工具备份ES数据库

ES数据库版本 elasticsearch7.16.0 备份工具 elasticsearch-dump &#xff08;docker 版&#xff09; 如果需要设置定时任务&#xff0c;需要使用使用elasticsearch-dump编译的二进制文件&#xff0c;需要nodejs、npm环境。 Docker 安装 docker pull elasticdump/elastics…