Maven内网开发使用离线仓库
Maven内网开发使用离线仓库
离线或者内网环境开发与外网不通,中央仓库连不上,使用 Maven 管理项目会遇到很多问题。
比如:依赖包缺失,内网的Nexus私服的包老旧,很久没有维护,项目无法运行打包,第三方非公开的私人 Jar 包引入麻烦。
本文面向这几个问题,提出几个解决方法:
解决方法:
- 把项目弄外网,打包好再传入;(× 都内网开发了保密要求不行,不耍小聪明)
- 使用本地离线仓库,离线打包;(√ )
- 先上传到内网Nexus私服,再使用;(√ )
具体操作:
1.离线仓库:
先说说离线仓库:
首先,在外网新建一个测试项目,把需要的 jar 包依赖坐标都写在 pom.xml 物料清单里,然后把依赖下载到本地仓库。
注意1:
默认本地仓库(比如:D:/maven/maven_repo)可能有历史项目曾用的 Jar 包,占用空间会非常大。可以在 IDEA 的设置搜索Maven,重写本地仓库路径(比如:D:/maven/demo_repo),这里面仅包含本项目用到的 Jar 包。
注意2
把 demo_repo 压缩成 zip 包,搞到内网后,解压在仓库根路径下直接搜索关键字:_remote/ lastUpdate,搜到的文件都删除掉,不然在内网还是去找远程仓库下载,影响打包。
最简单的方法,在本地仓库根目录搜索栏关键字删除:
搜到的文件ctrl+A
全选,再delete
删除。
命令方式:
# 打开仓库地址,输入cmd 打开命令行,执行下面语句
for /r %i in (_remote.repositories) do del %i
for /r %i in (lastUpdate) do del %i
内网操作
进入 Maven 的 conf 目录,复制 settings.xml 并重命名为 settings-offline.xml。修改 settings-offline.xml 文件,修改以下几处。
<!-- 本地仓库路径,因为现使用离线方式,可以注释掉 -->
<!-- <localRepository>D:/maven/maven_repo</localRepository> --><!-- 1. 找到 offline,设置离线模式,设置成 true -->
<offline>true</offline><!-- 2. 找到镜像 mirrors,设置离线模式 Maven 的镜像为本地仓库 -->
<mirrors><mirror><id>local-repo</id><mirrorOf>*</mirrorOf><name>central</name><url>file://D:/maven/demo_repo</url></mirror>
</mirrors>
修改 Maven 的配置文件为 settings-offline.xml,重写本地仓库为 D:/maven/demo_repo,重启IDEA刷新即可。
2.上传到内网Nexus私服
Nexus私服搭建网络上有很多教程,这里就不罗嗦了。
拥有 Nexus 管理员账号密码。
在 Nexus 上新建一个仓库,比如:http://localhost:8081/repository/demo-releases/
Nexus 页面手动一个个上传,对于一两个SDK来说很方便,整个仓库就很麻烦了。Nexus没提供批量上传文件夹的操作。但是有单个上传接口,就可以写个脚本遍历本地仓库上传模拟批量上传。
该图来源于网络,见右下角水印
把下面脚本 batch_upload_repo.sh
扔到本地仓库根目录,整个仓库再扔到服务器上,然后执行脚本;(Windows 上使用 git-bash 执行脚本上传也行)结构相对位置例如:D:\maven\demo_repo\com\oracle\ojdbc\ojdbc8\19.3.0.0D:\maven\demo_repo\batch_upload_repo.sh
sh mvnimport.sh -u yourusername -p yourpassword -r http://localhost:8081/repository/demo-releases/
上传完成后,刷新工程正常下载使用。
附批量上传脚本:
#!/bin/bash
# batch_upload_repo.sh,来源于网络
# 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 './mvnimport\.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}/{} ;
相关文章:

Maven内网开发使用离线仓库
Maven内网开发使用离线仓库 离线或者内网环境开发与外网不通,中央仓库连不上,使用 Maven 管理项目会遇到很多问题。 比如:依赖包缺失,内网的Nexus私服的包老旧,很久没有维护,项目无法运行打包,…...

CSS特效007:绘制3D文字,类似PS效果
css实战中,怎么绘制3D文字呢? 实际上理论很简单,使用text-shadow,根据需要调整阴影的颜色、大小、偏移量等参数,以达到你想要的立体效果。下面是一个简单的示例。关键点就是知道如何设置text-shadow。 效果图 源代码 …...

LLM 面试总结
溜一遍 MLStack.Cafe - Kill Your Next Machine Learning & Data Science Interview https://www.llmforce.com/llm-interview-questions MLStack.Cafe - Kill Your Next Machine Learning & Data Science Interview An interview with a language model, ChatGPT - W…...
acwing算法基础之数学知识--求小于等于n的所有质数
目录 1 基础知识2 模板3 工程化 1 基础知识 核心思想:把2~n中的非质数打上标记(也即,筛掉),剩余的就是质数。 一般做法: int primes[N]; //存储所有的质数 int st[N]; //存储是否被排除 int cnt; int n;…...
安装和使用 nn-Meter
安装和使用 nn-Meter nn-Meter: Towards Accurate Latency Prediction of Deep-Learning Model Inference on Diverse Edge Devices nn-Meter:精准预测深度学习模型在边缘设备上的推理延迟 Li Lyna Zhang, Shihao Han, Jianyu Wei, Ningxin Zheng, Ting Cao, Yuqin…...

PHP原生类总结利用
再SPL介绍 SPL就是Standard PHP Library的缩写。据手册显示,SPL是用于解决典型问题(standard problems)的一组接口与类的集合。打开手册,正如上面的定义一样,有许多封装好的类。因为是要解决典型问题,免不了有一些处理文…...

C/C++满足条件的数累加 2021年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C满足条件的数累加 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C满足条件的数累加 2021年9月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 现有n个整数,将其中个位数…...

zookeeper:服务器有几种状态?
四种: looking(选举中)、leading(leader)、following( follower)、 observer(观察者角色)...
大数据-之LibrA数据库系统告警处理(ALM-12040 系统熵值不足)
告警解释 每天零点系统检查熵值,每次检查都连续检查五次,首先检查是否启用并正确配置了rng-tools工具或者haveged工具,如果没有配置,则继续检查当前熵值,如果五次均小于500,则上报故障告警。 当检查到真随…...

HTML页面模拟了一个类似Excel的表格在线diy修改表格内容
html实现在线表格编辑,可以修改每个表格内容,并且可以添加行和列 这个HTML页面模拟了一个类似Excel的表格,可以添加和删除行和列,并且可以编辑每个表格的内容。通过点击按钮可以添加新的行和列,通过按钮可以删除最后一…...

Unity如何保存场景,如何导出工程文件/如何查看保存位置?【各版本通用】
如何保存场景? 在unity中CtrlS 或者File—>Save 输入你要保存的场景名【建议保存在Scenes文件夹下】 下图,保存场景不在Scenes文件夹下: 下图,保存在Scenes文件夹下: 下图,保存完成 如何导出工程文…...

2023年第十六届山东省职业院校技能大赛中职组“网络安全”赛项规程
第十六届山东省职业院校技能大赛 中职组“网络安全”赛项规程 一、赛项名称 赛项名称:网络安全 英文名称:Cyber Security 赛项组别:中职组 专业大类:电子与信息大类 二、竞赛目的 网络空间已经成为陆、海、空、天之后的第…...

html菜单的基本制作
前面写过一点网页菜单的博文;下面再复习一些技术要点; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.…...

Spark Job优化
1 Map端优化 1.1 Map端聚合 map-side预聚合,就是在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combiner。map-side预聚合之后,每个节点本地就只会有一条相同的key,因为多条相同的key都被聚合起来了。其他节…...

CSS花边001:无衬线字体和有衬线字体
网站中我们看到过很多字体,样子各有千秋。通常针对结构,区分为有衬字体(serif) 和无衬字体(sans-serif)。今天我们聊一下这个话题。 什么是有衬字体,什么是无衬字体? 衬线字体&…...

nodejs+vue+python+PHP+微信小程序-安卓- 基于小程序的高校后勤管理系统-计算机毕业设计
考虑到实际生活中在高校后勤管理小程序管理方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计&#x…...
Leetcode153. Find Minimum in Rotated Sorted Array
旋转数组找最小值 其中数组中的值唯一 你可以顺序遍历,当然一般会让你用二分来搞 方法1 数组可以分成两部分,左边是 ≥ n u m s [ 0 ] \ge nums[0] ≥nums[0], 右边是 < n u m s [ 0 ] <nums[0] <nums[0] 换句话说就是找第一个 < n u m s…...

为什么要用“交叉熵”做损失函数
大家好啊,我是董董灿。 今天看一个在深度学习中很枯燥但很重要的概念——交叉熵损失函数。 作为一种损失函数,它的重要作用便是可以将“预测值”和“真实值(标签)”进行对比,从而输出 loss 值,直到 loss 值收敛,可以…...

【Android】Android apk 逆向编译
链接:https://pan.baidu.com/s/14r5s9EJwQgeLK5cCb1Gq1Q 提取码:qdqt 解压jadx 在 lib 文件内找到 jadx-gui-1.4.7.jar 打开cmd 执行 :java -jar jadx-gui-1.4.7.jar示列:...

04-详解SpringBoot自动装配的原理,依赖属性配置的实现,源码分析
自动装配原理 依赖属性配置 提供Bean用来封装配置文件中对应属性的值 Data public class Cat {private String name;private Integer age; }Data public class Mouse {private String name;private Integer age; }cartoon:cat:name: "图多盖洛"age: 5mouse:name: …...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...