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: …...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
