网页在线制作网站/网站优化 seo和sem
目录
- 1 现状
- 2 当前解决
- 3 更好的解决
- 3.1 下载 Maven localRepository 工具包
- 3.2 上传本地 localRepository 包
- 3.3 清理 localRepository 中指定后缀的文件
1 现状
在使用 Maven 时,我们可能会经常与本地仓库和私服仓库打交道。
例如对于本地仓库,因为某些文件位拉取到,会在本地仓库的项目目录下产生 .lastUpdated
后缀的文件,有时编译项目时为了更快的重新再次拉取正确的包,还不得不手动清除这些文件。
而对于私服,如果是公司自己的私服,不巧的是公司的 Maven 私服(例如 Nexus)又无法访问外网,在公司内网使用公司私服编译项目时,我们期望上传上自己的依赖包(此时往往是很多的文件),就不得不手动一个一个上传,如果动手能力比较强的,可以根据对应环境编写一个小脚本执行。
2 当前解决
如果是在 Linux 服务,可以通过如下的 Shell 命令清除本地仓库下所有的 .lastUpdated
后缀的文件目录,但如果是 Windows 系统或者其他不支持 Shell 的系统,就不得不查找对应系统的查找和清除文件夹的命令了。
find ~/.m2/repository/ -regex ".*\.lastUpdated" | xargs dirname | xargs rm -rf
对于向自己私服发布包的情况,一般有两种方式,第一种是通过Maven 私服的管理页面提供的功能进行上传,第二种是通过 mvn deploy
命令上传。
对于本地系统安装了 maven 的,可以使用 Maven 命令上传,命令如下:
mvn -s /Users/yoreyuan/code/yore/settings.xml deploy:deploy-file \
-Dfile=/Users/yoreyuan/.m2/xxx/1.0.0/xxx-1.0.0.jar \
-DpomFile=/Users/yoreyuan/.m2/xxx/1.0.0/xxx-1.0.0.pom \
-Durl=http://nexus.yore.cn/repository/maven-releases \
-DrepositoryId=yore_nexus -X -Dpackaging=jar
如果顺利的话,非常清爽的成功了,但紧接着可能会遇到如下的问题:
【问题 1】如果包非常多,上面的命令一个一个执行简直是噩梦。对于会 Shell或 Python 的,则可能想到编写一个脚本。但如果不巧的是使用的是 Windows 系统的 Java 开发者,其开发环境没有 Shell 和 Python 如何上传呢?最终可能在公司找了一个Linux服务器,配上环境,把自己的本地的Maven localRepository 打包上传到公司服务器上,然后又编写脚本,执行脚本,循环上传这些包,最终费了好大劲终于上传上了,短暂的开心后,突然却又遇到了下面的问题。
【问题 2】使用公司的私服来编译自己项目时,竟然报缺包。经过排查,发现上面的命令仅仅上传了 jar 包,例如 xxx-tests.jar
、xxx-sources.jar
、xxx-test-sources.jar
和 xxx-linux-x86_64.exe
等都没有上传,对脚本熟悉的,可能马上花一些时间脚本就改好了,对于脚本不太熟悉的 java 开发者,可能就在一次一次报错中找到缺失的包,通过 Nexus 页面上传了,终于可以编译过了。自己非常非常的开心,于是把自己历尽千辛万苦实践可行的方法分享给公司其他小伙伴。
【问题 3】可运行了一段时间,在某天晚上流水线出包的时候突然自己的项目编译报错了,竟然提示有个包神奇的又找不到了。其实最苦恼还有,包编译出来了,运行却失败了,一通排查,竟发现依赖的某个包的版本使用的却是另外一个版本的包。望着一串串流水线异常日志,此时终于又陷入了沉思。
经过一段时间的排查,终于发现不知道是哪个大聪明(也许是自己)从新上传了某个依赖,在上传某个依赖的时候,没有上传项目的 pom 文件,而是直接勾选了 Nexus Upload 页面的 Generate a POM file with these coordinates,导致私服上项目中很重要的依赖的 pom 中依赖信息缺失。此时如果在没有显示引用依赖的情况下,可能会从其他依赖集成过来某个包,如果包存在就顺利编译成功了,但可能运行的时候发现类缺失、方法缺失等等异常,而如果包不存在则直接在流水线编译的时候就异常了。
所以面对这种情况,排查私服上 pom 文件,如果有缺失的,手动删除,单独上传完整的 pom 文件,如下图,jar 上传后(千万不要勾选 Generate a POM file with these coordinates),然后再上传一次 pom 文件(此时 GAV 信息是灰色的,直接上传即可)。
3 更好的解决
一路走来,坑坑洼洼,磕磕绊绊,细节那么多,怎么保证身边其他同事不会一不小心再犯同样的错呢?有没有更好的解决方案呢?
答案肯定是有滴,下面来介绍一个实用的工具 tools-maven-localRepository,这个项目是使用 go 语言编写的一个 Maven localRepository 工具。支持的操作系统有 Linux、Windows、Mac OS,可以直接指定本地 localRepository 路径即可将此路径下的所有包上传到 Maven 私服上,也支持清理 localRepository 中指定后缀的文件。
环境要求,系统中需要安装 JDK 和 Maven(对于 Java 开发,开发环境中一般都有,如果没有需要先安装配置下)
3.1 下载 Maven localRepository 工具包
使用也非常简单,访问 tools-maven-localRepository/releases/tag/v1.0.0
下载编译好的工具包 tools_maven_localRepository-bin.zip,解压,解压后目录如下
tools_maven_localRepository
├── config.yaml.template # 应用的配置文件模板
├── darwin-amd64 # Mac OS
│ └── tools_localRepo
├── linux-amd64 # linux OS
│ └── tools_localRepo
├── readme.md
├── settings.xml.template # Maven settings.xml 配置文件模板
└── windows-amd64 # Windows OS└── tools_localRepo
拷贝 settings.xml.template 为 settings.xml,简单配置如下信息(主要是 servers 中的私服账号信息):
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd"><!--localRepository>/home/yore/.m2/repository</localRepository--><pluginGroups></pluginGroups><proxies></proxies><servers><server><id>yore_nexus</id><username>yore</username><password>123456</password></server></servers><mirrors><mirror><id>yore_nexus</id><mirrorOf>*</mirrorOf><url>http://nexus.yore.cn/repository/maven-public</url></mirror></mirrors><profiles><profile><id>yore_nexus</id><repositories><repository><id>yore_nexus</id><name>yore nexus</name><url>http://nexus.yore.cn/repository/maven-public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></profile></profiles><activeProfiles><activeProfile>yore_nexus</activeProfile></activeProfiles>
</settings>
3.2 上传本地 localRepository 包
拷贝 config.yaml.template 为 config.yaml,简单配置如下信息:
# 是否输出项目的 debug 信息
verbose: false
logLevel: "INFO"# Maven localRepository 本地路径
localRepository: "~/.m2/repository"deploy:enable: truecommandName: "/usr/local/bin/mvn"# Alternate path for the user settings filesettingXml: "~/.m2/settings.xml"# The ID of the repositoryid: "yore_nexus"# The URL of the repository mavenurl: "http://nexus.yore.cn/repository/maven-releases"# Output maven debugging informationdebug: false# The list of file suffixes to be ignoredexcludeSuffixs:- ".DS_Store"- ".asc"- ".lastUpdated"- ".md5"- ".repositories"- ".sha1"- ".sha256"- ".sha512"- ".xml"clean:enable: false
主要关注如下几个配置
localRepository
: Maven localRepository 本地路径deploy.enable
: 启用 deploydeploy.settingXml
: Maven 的 setting.xml 配置路径deploy.id
: 私服仓库的 ID,需要与 setting.xml 中配置的私服账号 ID 一致deploy.url
: 私服仓库的地址
执行如下命令开始上传
./tools_localRepo --config ./config.yaml
如果需要输出项目更详细的信息可以将 verbose
设置为 true,如果需要输出 Maven 执行的更详细的信息,可以将 deploy.debug
设置为 true。
3.3 清理 localRepository 中指定后缀的文件
拷贝 config.yaml.template 为 config.yaml,简单配置如下信息:
# 是否输出项目的 debug 信息
verbose: false
logLevel: "INFO"# Maven localRepository 本地路径
localRepository: "~/.m2/repository"deploy:enable: falseclean:# If it is in cleaning mode, the list of file suffixes that will be cleaned upenable: truesuffixs:- ".DS_Store"- ".lastUpdated"
主要关注如下几个配置
localRepository
: Maven localRepository 本地路径deploy.enable
: 关闭 deployclean.enable
: 启用 cleanclean.suffixs
: 需要清理 localRepository 中的后缀文件列表
执行如下命令开始上传
./tools_localRepo --config ./config.yaml
同样,如果需要输出项目更详细的信息可以将 verbose
设置为 true,如果需要输出 Maven 执行的更详细的信息,可以将 deploy.debug
设置为 true。
相关文章:

一个实用的 Maven localRepository 工具
目录 1 现状2 当前解决3 更好的解决3.1 下载 Maven localRepository 工具包3.2 上传本地 localRepository 包3.3 清理 localRepository 中指定后缀的文件 1 现状 在使用 Maven 时,我们可能会经常与本地仓库和私服仓库打交道。 例如对于本地仓库,因为某…...

目标检测,图像分割,超分辨率重建
目标检测和图像分割 目标检测和图像分割是计算机视觉中的两个不同任务,它们的输出形式也有所不同。下面我将分别介绍这两个任务的输出。图像分割又可以分为:语义分割、实例分割、全景分割。 语义分割(Semantic Segmentation)&…...

微信小程序 城市点击后跳转 并首页显示被点击城市
在微信小程序中,渲染出城市列表后,如何点击城市,就跳转回到首页,并在首页显示所点击的城市呢? 目录 一、定义点击城市的事件 二、首页的处理 首页:点击成都市会跳转到城市列表 城市列表:点击…...

Linux - nfs服务器
五、nfs服务器 1、基础 NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统 中看来,那个远程主机的目录就好像是自己的一个磁盘分区一样。 由于NFS支持的功能比较多,而不同的功能都会使用不同的程…...

uniapp图片上传预览uni.chooseImage、uni.previewImage
文章目录 1.上传图片2.预览图片 1.上传图片 uni.chooseImage(OBJECT) 从本地相册选择图片或使用相机拍照。 App端如需要更丰富的相机拍照API(如直接调用前置摄像头),参考plus.camera 微信小程序从基础库 2.21.0 开始, wx.choos…...

C++ 字符串中数字识别
【问题描述】 输入一个字符串,含有数字和非数字字符,如“sumabc234;while(abc700)tab{ass346;bssabc267;}”,将其中连续的数字作为一个整数,依次存放到一个数组nums中。例如,234放在nums[0],700放在nums[1…...

学术中常见理论归纳总结-不定期更新
1.信息传播类 1.1 扩散创新理论 创新扩散理论是传播效果研究的经典理论之一,是由美国学者埃弗雷特罗杰斯(E.M.Rogers)于20世纪60年代提出的一个关于通过媒介劝服人们接受新观念、新事物、新产品的理论,侧重大众传播对社会和文化的影响。 1927-1941年进行的“艾奥瓦杂交玉…...

ModelSim怎么修改字体及大小
点击TOOLS 选择PERFERENCES选择下一级菜单的TEXTFONT/CHOOSE/选择字体和大小最后不要忘记点apply再退出...

图片预处理技术介绍4——降噪
图片预处理 大家好,我是阿赵。 这一篇将两种基础的降噪算法。 之前介绍过均值模糊和高斯模糊。如果从降噪的角度来说,模糊算法也算是降噪的一类,所以之前介绍的两种模糊可以称呼为均值降噪和高斯降噪。不过模糊算法对原来的图像特征的…...

Scrapy管道设置和数据保存
1.1 介绍部分: 文字提到常用的Web框架有Django和Flask,接下来将学习一个全球范围内流行的爬虫框架Scrapy。 1.2 内容部分: Scrapy的概念、作用和工作流程 Scrapy的入门使用 Scrapy构造并发送请求 Scrapy模拟登陆 Scrapy管道的使用 Scrapy中…...

D84【python 接口自动化学习】- pytest基础用法
day84 pytest常用断言类型 学习日期:20241130 学习目标:pytest基础用法 -- pytest常用断言类型 学习笔记: 常用断言类型 代码实践 def test_assert():assert 11assert 1!2assert 1<2assert 2>1assert 1>1assert 1<1assert a…...

如何正确书写sh文件/sh任务?bash任务
正确书写xx.sh文件的方式为: source /usr/local/miniconda3/bin/activate condaEnv export CUDA_VISIBLE_DEVICES0 cd /hy-tmp/test export PYTHONPATH"xxx:$PYTHONPATH" python AAA.py python BBB.py python CCC.py 直接运行: bash xx.sh 即可…...

多线程篇-5--线程分类(线程类型,springboot中常见线程类型,异步任务线程)
常见的线程类型包括用户线程(User Threads)、守护线程(Daemon Threads)、主线程(Main Thread)、工作线程(Worker Threads)和线程池中的线程。 一、用户线程(User Thread…...

docker快速部署gitlab
文章目录 场景部署步骤默认账号密码效果 场景 新增了一台机器, 在初始化本地开发环境,docker快速部署gitlab 部署步骤 编写dockerfile version: 3.7services:gitlab:image: gitlab/gitlab-ce:latestcontainer_name: gitlabrestart: alwayshostname: gitlabenviron…...

C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础
本文将带你深入了解C#中各种数据类型的特点、用途和最佳实践,让你不仅能熟练运用基本类型,还能掌握如何在实际项目中做出最合适的选择。 目录 C#基本语法 C#数据类型 C#类型转换 C#变量常量 C#基本语法 在学习C#之前我们要先知道C#的基础构建是由哪些…...

burp2
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...

[ACTF2020 新生赛]BackupFile--详细解析
信息搜集 让我们寻找源文件,目录扫描: 找到了/index.php.bak文件,也就是index.php的备份文件。 后缀名是.bak的文件是备份文件,是文件格式的扩展名。 我们访问这个路径,就会直接下载该备份文件。 我们把.bak后缀删掉…...

循环神经网络(RNN)简述
RNN及其变体 1、概述 (一)、概念 RNN(Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出。 RNN的循环机制使模型隐层**上一时间步产生的结果, 能够作为当下时间步…...

九、Ubuntu Linux操作系统
一、Ubuntu简介 Ubuntu Linux是由南非人马克沙特尔沃思(Mark Shutteworth)创办的基于Debian Linux的操作系统,于2004年10月公布Ubuntu是一个以桌面应用为主的Linux发行版操作系统Ubuntu拥有庞大的社区力量,用户可以方便地从社区获得帮助其官方网站:http…...

SpringBoot 新冠密接者跟踪系统:校园疫情防控的智能守护者
摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…...

【Ubuntu】E: Unable to locate package xxx
报错描述 在 Ubuntu 上 执行 apt install xxx 出现下面的报错: 即无法定位到该 Package,一般形式如下: # apt install xxx Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable …...

vue多页面应用集成时权限处理问题
在多页面应用(MPA)中,权限管理通常会涉及到每个页面的访问控制、身份验证、以及权限校验。以下是几种常见的权限处理方式: 1. 前端路由权限控制 原理:虽然是多页面应用,通常每个页面会独立加载和渲染&…...

Socket编程(TCP/UDP详解)
前言:之前因为做项目和找实习没得空,计算机网络模块并没有写成博客,最近得闲了,把计算机网络模块博客补上。 目录 一,UDP编程 1)创建套接字 2)绑定端口号 3)发送与接收数据 4&…...

qt QConicalGradient详解
1、概述 QConicalGradient是Qt框架中QGradient的一个子类,它用于创建锥形渐变效果。锥形渐变是从一个中心点出发,沿着360度的圆周扩散的颜色渐变。这种渐变通常用于模拟光线旋转、创建彩虹效果或实现其他复杂的颜色过渡。QConicalGradient允许你定义渐变…...

存储过程与自然语言处理逻辑的不同与结合
在现代软件开发中,存储过程与自然语言处理(NLP)逻辑都发挥着重要作用。存储过程是一种在数据库内部运行的预编译程序,通常用于处理与数据相关的任务,例如插入、更新、删除数据以及复杂的查询操作。而自然语言处理&…...

了解Linux —— 理解其中的权限
前言 在了解Linux权限之前,先来探讨我们使用的shell 命令它到底是什么? Linux 是一个操作系统,我们称其为内核(kernel) ,正常情况下,我们一般用户操作并不是去直接使用内核,而是通过kernel 的外壳程序&…...

知识图谱嵌入与因果推理的结合
知识图谱通过节点(实体)和边(关系)来表示现实世界中的信息,但如何将这些信息转化为可进行推理和决策的形式,仍然是一个挑战。 另一方面,因果推理(Causal Inference)作为…...

STM32 PWM波形详细图解
目录 前言 一 PWM介绍 1.1 PWM简介 1.2 STM32F103 PWM介绍 1.3 时钟周期与占空比 二.引脚映像关系 2.1引脚映像与寄存器 2.2 复用功能映像 三. PWM 配置步骤 3.1相关原理图 3.2配置流程 3.2.1 步骤一二: 3.2.2 步骤三: 3.2.3 步骤四五六七: …...

Python Web 开发 FastAPI 入门:从基础架构到框架比较
Python Web 开发 FastAPI 入门:从基础架构到框架比较 目录 🖥️ Web 服务器概述(如 Nginx、Apache)🔗 前后端分离架构详解🔄 HTTP 路由和请求处理机制🧰 Web 框架概述:Django、Fla…...

基于STM32的智能仓库管理系统设计
目录 引言环境准备 硬件准备软件准备智能仓库管理系统基础 控制系统架构功能描述代码实现:实现智能仓库管理系统 4.1 RFID标签读取模块4.2 库存管理模块4.3 数据显示与监控模块4.4 无线通信模块应用场景:智能仓库管理系统优化问题解决方案与优化收尾与总…...