Maven 多项目依赖版本管理(Maven Multi Project version management)

2023-11-10

博主工作负责的微服务已经达到了十几个,每个微服务相互直接都是独立的,有独立的project,于是maven的依赖管理就很头疼了。每一个项目都需要添加自己的版本,还要互相比对,每次升级一些第三方依赖需要修改所有文件,于是产生了自己写parent的想法。

访问我的个人网站获取更多文章

问题

第一种思路是:自己写一个parent pom,使用dependencyManagement管理所有依赖的版本,通过maven install安装到本地仓库。之后在使用的地方设置parent为之前写的即可。

但是这样做存在一个问题,我使用了spring-boot-starter-parent, maven只允许存在一个parent。当然可以通过在项目中使用dependencyManagement解决,但是我想统一到一起管理。

第二个思路:将自己写的parent pom的parent设置为spring-boot-starter-parent即可解决上一个问题。注意:dependencyManagement中出现的每一个依赖,必须写明版本。当我的项目继承自己的parent的时候,也自动的继承了spring-boot-starter-parent,所以,依赖于spring-boot-starter-parent提供版本的项目,不比再写到dependencyManagement中。

思路二的问题是:我所有项目没有采用spring-boot-starter-web提供的tomcat容器,而是使用了jetty,包括我很多项目使用了一些相同的依赖,是否可以将这些依赖组合在一起,简化我的配置呢?

简而言之,我想做一个和spring一样的pom version管理。通过搜索和阅读maven的文档,我发现了一个概念:bom

构建自己的依赖库

bom:bill of materials,直译过来是物料清单,我们通过bom的方式构建自己的依赖管理。

创建bom

新建一个maven项目,pom.xml文件即我们的bom文件。
我们在bom文件中管理所有的子依赖集合项目,其本身不负责依赖版本的管理。bom文件的packaging属性为pom,dependencyManagement包含了所有的子依赖集合项目。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>bom</artifactId>
  <version>1.0.0</version>
  <packaging>pom</packaging>
  <properties>
    <project1Version>1.0.0</project1Version>
    <project2Version>1.0.0</project2Version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.test</groupId>
        <artifactId>project1</artifactId>
        <version>${project1Version}</
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven 多项目依赖版本管理(Maven Multi Project version management) 的相关文章

  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • SAML 服务提供商 Spring Security

    当使用预先配置的服务提供者元数据时 在 Spring Security 中 是否应该有 2 个用于扩展元数据委托的 bean 定义 一份用于 IDP 元数据 一份用于 SP 元数据
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • wait() 在游戏中如何工作?

    在 playframework 的文档中here http www playframework org documentation 1 2 1 asynchronous已写 public static void loopWithoutBlo
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 多模块项目的 Maven 阶段顺序?

    对不起 我是 Maven 的菜鸟 这是我的maven项目目录 project pom xml moduleA moduleB sub moduleA sub moduleB sub moduleC moduleC 当然 每个模块和子模块内都
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 测试弱引用

    在 Java 中测试弱引用的正确方法是什么 我最初的想法是执行以下操作 public class WeakReferenceTest public class Target private String value public Targe
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • spring中如何使用jackson代替JdkSerializationRedisSerializer

    我在我的一个 Java 应用程序中使用 Redis 并且正在序列化要存储在 Redis 中的对象列表 但是 我注意到使用 RedisTemplate 会使用 JdkSerializationRedisSerializer 相反 我想使用 J
  • Eclipse 中 Spring MVC 模型对象的 (jsp /jstl) 视图中的代码辅助

    在 Spring MVC 中 当将对象放置在视图模型中时 如下所示 public String getUser Model model fetch user model addAttribute user user return viewN
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • hashcode 的默认实现为以相同方式构造的对象返回不同的值

    我在这里编写一个示例代码 public class Test private int i private int j public Test TODO Auto generated constructor stub public Test
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树

随机推荐

  • WebSocket 协议简介

    一 什么是WebSocket WebSocket是一种在单个TCP连接上进行全双工通讯的协议 WebSocket通信协议于2011年被IETF定为标准RFC 6455 并由RFC7936补充规范 WebSocket API也被W3C定为标准
  • 为什么 Mac 适合编程?

    强劲的 GPU 和 CPU 我的家用电脑和笔记本都配了顶级的显示器和 GPU Steam 上有 2000 游戏 我和孩子玩了很多 并且我对 CUDA 和 深度学习很感兴趣 而 Mac 对此就无能为力了 对我来说 强大的 GPU 是非常重要的
  • 整体结构&InnoDB数据字典(1) --系统表空间结构(三十三)

    前面说了xdes 类型页面 第一页的extent0里面的xdes页面叫做fsp 因为里面还存着表空间的数据file space header 这里面主要存着xdes entry几个链表的基点 和inode entry链表的基点 后面的每个组
  • Crypto

    数据库密码 flag格式moctf 密码 题目如下 20岁的小刚 自幼热爱信息安全 一天他利用SQL注入漏洞入侵了XX公司的数据库 修改了数据库访问密码 网警不久便抓获了小刚 在小刚系统中发现了他做了入侵记录 上面写着一串字符串 D8EA7
  • ompl库安装使用

    参考官网 参考2 官网翻译
  • 期货交易入门知识有哪些?

    期货交易入门知识有哪些 期货初学者基本知识之二 期货交易方式 期货交易使用保证金交易制度 不同期货品种的保证金比例不同 并且同一种期货的保证金比例也是会变化和调整的 因此投资者需要注意自己所投资的期货品种的保证金比例是多少 另外 国内期货交
  • np.argmax()

    np argmax 表示返回索引最大值 需要区分索引和元素值 先说结论 三维张量时 将张量看成正方体 axis 0时表示沿高度轴 深度方向 各元素最大值 返回结果形状与正方体顶面相同 axis 1时表示沿宽度轴 矩阵行方向 各元素最大值 返
  • mysql怎么在一段时间区间内按照周分组,把属于一周的数据汇总在一起以及如何自定义周?

    小编在写需求的时候发现有一个需求是给出一个开始 起止时间 需要你把每一周的数据汇总然后展现出来 比如给了前四周的日期 需要你自动汇总第一周到第四周的数据 奇葩的来了 正常来说周一到周日为一周 或者周日到周六为一周 但是产品需要周六到周五算一
  • IDEA(2021) 创建Java Web项目

    IDEA 2021 创建Java Web项目 开发工具与关键技术 IDEA 2021 配置Tomcat 字符编码UTF 8 和热加载 作者 刘铭聪 撰写时间 2021年4月29日 1 IDEA 2021 创建Java Web项目 1 1 创
  • SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系

    SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 1 SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 1 SolidWorks不能使用选择如允许此选择将生成有冲突的前后关系 https www swrj
  • Ubuntu 20.04安装LAMP,并配置sqli-labs靶场

    Ubuntu 20 04安装LAMP 并配置sqli labs靶场 一 安装lamp 安装apache2 安装php 安装mysql 安装libapache2 mod php 安装php mysql 确认安装成功 确认apache2安装成功
  • webpack serve 正常启动但没效果

    安装 webpack dev server npm i webpack dev server d 都是最新版本 配置webpack config js const path require path 导入 node js 中专门操作路径的模
  • 阿里云E-HPC+i4p大内存实例,加速寻因生物单细胞数据分析效率

    寻因生物是一家专注于单细胞技术的生物科技企业 拥有自主研发的微孔芯片与油包水双技术单细胞捕获平台 致力于通过国产高通量单细胞全链条产品及服务 将单细胞技术普适化应用于临床及药物研发 助力相关疾病研究 单细胞测序技术呼唤更高计算性能 自单细胞
  • 时序预测

    时序预测 MATLAB实现BiLSTM时间序列预测 目录 时序预测 MATLAB实现BiLSTM时间序列预测 BiLSTM介绍 BiLSTM实现 单层BiLSTM设计 多层BiLSTM设计 BiLSTM程序 设计案例1 设计案例2 参考资料
  • 【Vue2】事件处理(点击、按键)

    事件处理 js中button按钮点击触发函数写法
  • 贪心算法——最小生成树

    设G V E 是无向连通带权图 即一个网络 E中的每一条边 v w 的权为c v w 如果G的子图G 是一棵包含G的所有顶点的树 则称G 为G的生成树 生成树上各边权的总和称为生成树的耗费 在G的所有生成树中 耗费最小的生成树称为G的最小生
  • 【论文笔记_知识蒸馏_2021】KNOWLEDGE DISTILLATION VIA SOFTMAX REGRESSION

    代码地址 https github com jingyang2017 KD SRRL 摘要 本文通过知识提炼解决了模型压缩的问题 我们主张采用一种优化学生网络倒数第二层的输出特征的方法 因此与表征学习直接相关 为此 我们首先提出了一种直接的
  • vue使用element el-table实现动态表头数据表、并滚动展示列表

    vue使用el table 实现动态数据表 并滚动展示 tableLabel表头数据 支持条数 宽度设置 tableData存放所有数据 showList存放用于展示的数据 使用setInterval定时更新showList 删除第一条 末
  • R语言使用长短期记忆网络(LSTM)进行时间序列分析

    目录 引言 数据准备 数据预处理 创建训练数据和标签 构建LSTM模型 训练模型
  • Maven 多项目依赖版本管理(Maven Multi Project version management)

    博主工作负责的微服务已经达到了十几个 每个微服务相互直接都是独立的 有独立的project 于是maven的依赖管理就很头疼了 每一个项目都需要添加自己的版本 还要互相比对 每次升级一些第三方依赖需要修改所有文件 于是产生了自己写paren