news 2026/8/4 19:24:48

maven依赖碎碎念:实际公司里的一些做法或坑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
maven依赖碎碎念:实际公司里的一些做法或坑

maven依赖碎碎念:实际公司里的一些做法或坑

在一些小点的公司,或者是没那么复杂的项目里头,要么没有公司的maven私仓,要么即使有,整体的maven管理也会简单一些的。比如:

下面是典型的微服务/springboot的项目结构:a或b是parent project,其下有一些子模块继承parent,父模块也通过 引入各个子模块,子模块之间可以有依赖,如common都被各个子模块依赖,其他子模块之间也可以存在依赖

a-project common a1 a2 a3 b-project common b1 b2 b3

一般在这种小公司里,两个project,a和b毫无关系,不产生依赖。

以a为例,在a里头,同一个project里头的互相依赖都是不需要mvn install就可以及时得到更新反馈的:比如说a1依赖common,在common里添加一个新方法,在a1里立即就能用,并不需要common子模块先install,这应该是IDE带来的好处,允许自己local maven 仓库 “没货”

project外的依赖就得自己local maven仓库 “有货” 了,要么就通过下载,要么就得本地执行mvn install到本地仓库里。

比如此时公司有个 company-common 是公司级别的公共依赖,a-project 和 b-project 都引用。若 company-common 有变动,要么:

  1. 下载 company-common 自己切换到合适的分支,然后mvn install,让本地仓库 “有货”
  2. 要么别人已经推送到公司私仓了,从私仓下载 (如果不是用SNAPSHOT版本的话需要修改 a 或 b 里头依赖的 company-common 的版本

为什么这里头第1种方法这么坑

有时候依赖关系比较复杂,在a编译报错的时候,你不一定能想到是 company-common 这个依赖需要更新,比如编译a的过程发现com.foo.bar.common.test.Foo这个类缺少,可能依赖关系不复杂的时候可以从common的包名联想到 company-common 这个依赖,一旦没这些经验,靠着包名你怎么知道这个类是在哪个jar包里呢?况且知道哪个jar(GAV)的时候害得去反推是直接还是间接引入。

你可能根深蒂固:凭什么需要我下载当前项目外的依赖到本地进行install,这一般人都只会想到我从公司私仓下载肯定会有,如果没有那就是有人没上传上去。

为什么有时候依赖关系会这么庞大和复杂呢?

a 项目里本身就有很多子模块,每个子模块之间可能存在依赖,子模块再去意外外部的依赖,另外被依赖的外部的也不一定是一个整体,比如 company-common 里头也可以有很多模块,不一定就整个被依赖。我们这里也只是举例了一个 company-common,如果更多类似 company-common 的时候呢?

依赖深度也可能非常深,可能 company-common 并不是在第一层,可能是间接甚至隔了好几层才被引入。

实际项目因为历史原因可能累积的屎山代码导致依赖关系_真的很复杂!!!_

maven里的SNAPSHOT和RELEASE版本,在实际中用的多吗?

大公司用得不多,SNAPSHOT 好处当然是当被依赖的jar可以随时改,依赖这个jar的项目不需要改依赖的版本号。大公司里一般都是固定的版本号,比如 X.Y.Z 或者 v1.17.9 之类的,或者是编译后会带个时间戳,比如 v1.17.9-20260101154134666 之类的。引用者可以写死引用的版本,比如<version>v1.17.9-20260101154134666</version>或者使用版本区间的写法如<version>[1.0.0,19.0.0]</version>

暂时写到这,后续有补充再说

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 15:06:49

Speech Seaco Paraformer跨境电商应用:中文直播实时翻译场景

Speech Seaco Paraformer跨境电商应用&#xff1a;中文直播实时翻译场景 1. 引言&#xff1a;让中文直播触达全球买家 你有没有想过&#xff0c;一场用中文进行的跨境电商直播&#xff0c;能让不懂中文的海外观众也实时看懂内容&#xff1f;这不再是未来设想&#xff0c;而是…

作者头像 李华
网站建设 2026/7/24 8:28:04

PyTorch环境部署失败?常见错误排查步骤详解

PyTorch环境部署失败&#xff1f;常见错误排查步骤详解 1. 引言&#xff1a;为什么你的PyTorch环境总是“卡住”&#xff1f; 你是不是也遇到过这种情况&#xff1a;刚拿到一块新GPU&#xff0c;满心欢喜地拉取镜像、启动容器&#xff0c;结果一运行 torch.cuda.is_available…

作者头像 李华
网站建设 2026/8/4 2:18:19

为什么你的API总是超时?,深入剖析Dify重试机制配置误区

第一章&#xff1a;为什么你的API总是超时&#xff1f; API 超时是现代分布式系统中最常见的性能瓶颈之一。当客户端请求在规定时间内未收到响应&#xff0c;便触发超时机制&#xff0c;这不仅影响用户体验&#xff0c;还可能引发连锁故障。造成 API 超时的原因多种多样&#x…

作者头像 李华
网站建设 2026/8/4 2:18:11

3个YOLO11高效技巧:镜像免配置+多场景适配指南

3个YOLO11高效技巧&#xff1a;镜像免配置多场景适配指南 YOLO11 是当前目标检测领域中极具代表性的新一代算法&#xff0c;它在保持高精度的同时进一步优化了推理速度与模型轻量化设计。相比前代版本&#xff0c;YOLO11 在结构设计上引入了更智能的特征融合机制和动态注意力模…

作者头像 李华
网站建设 2026/8/4 2:19:17

快速上手DCAT-Admin开发指南

安装 DCAT-Admin确保系统已安装 PHP&#xff08;≥7.3&#xff09;和 Composer。通过 Composer 创建 Laravel 项目并安装 DCAT-Admin&#xff1a;composer create-project laravel/laravel dcat-admin-demo cd dcat-admin-demo composer require dcat/laravel-admin发布资源文件…

作者头像 李华
网站建设 2026/8/1 7:09:27

SenseVoiceSmall部署卡显存?显存优化实战技巧让利用率提升180%

SenseVoiceSmall部署卡显存&#xff1f;显存优化实战技巧让利用率提升180% 1. 问题背景&#xff1a;为什么SenseVoiceSmall会显存不足&#xff1f; 你是不是也遇到过这种情况&#xff1a;满怀期待地部署了阿里达摩院开源的 SenseVoiceSmall 多语言语音理解模型&#xff0c;结…

作者头像 李华