mvn help:effective-pom命令的作用

news2024/9/24 23:32:52

无论 POM 文件中是否显示的声明,所有的 POM 均继承自一个父 POM,这个父 POM 被称为 Super POM。在pom的继承关系中,子pom可以覆盖父pom中的配置如果子pom没有覆盖,那么父pom中的配置将会被继承。按照这个规则,继承关系中的所有pom叠加到一起,就生成一个最终生效的pom。maven实际运行的过程中,执行构建操作就是按照这个最终的pom运行起来的。最终的pom也叫作有效pom翻译为effective POM,通过mvn help:effective-pom 命令就可以查看项目的最终生成的pom(有效的pom)。

注意:假如项目当中引用了一个A的依赖,而A又引用了其他的依赖,通过mvn help:effective-pom 查出来的pom并不会展示出来A引用的其他依赖(不展示并不代表不可以使用,具体是否可以使用要根据依赖的scope来决定的)。只会展示出来当前项目<parent>所继承的依赖!可能他所继承的pom当中仍然继承了别的,会将所有层级汇集起来展示出来的!

下面进行示例演示,通过示例便可以一目了然:

项目是一个聚合项目,如下是父工程的pom.xml

在idea当中创建springboot项目的时候都会引用一个spring-boot-starter-parent作为父类,实际上没有他我们项目就不能使用了吗?当然不是,我们可以点进去看一下他都做了些什么,实际上就是给我们提供了一个管理的依赖pom。

新建一个空项目,只引入web(注意没有引入boot版本管理,那就需要手动添加版本号),springboot照样可以启动的哟

这是一个common包,主要存放公共的一些配置

这是一个web工程

这时候我们对web工程进行使用mvn help:effective-pom命令,看看他究竟执行的时候有哪些依赖。

在这里插入图片描述

他会把所有父 POM汇集到一起生成一个pom,lombok我是在父类当中引用的,可以发现最终pom当中他会继承过来的。

现在有个问题,我现在想使用spring-boot-starter-parent提供的依赖管理,但是我又不想继承他,因为我还要继承别的项目,这时候该怎么办呢?

maven和Java一样都是单继承机制,maven当中有<type>pom</type>和<scope>import</scope> ,通过这两个标签在dependencyManagement中声明依赖,可以替代继承(达到类似parent标签的作用,解决了单继承问题)。

官网讲解:https://docs.spring.io/spring-boot/docs/3.1.0-SNAPSHOT/maven-plugin/reference/htmlsingle/#using.import
在这里插入图片描述

<dependencyManagement>
	 <dependencies>
		<dependency>
			 <groupId>org.springframework.boot</groupId>
			 <artifactId>spring-boot-starter-parent</artifactId>
			 <version>2.7.10</version>
			 <type>pom</type>
			 <scope>import</scope>
		 </dependency>
	</dependencies>
</dependencyManagement>

类似于

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.10</version>
    <relativePath/>
</parent>

注意:这里只是类似,并不完全替代继承。

以如下示例来来看:这里的dependencies是plugin里面嵌套的dependencies。

说明使用dependencyManagement来替代parent的时候,plugin里面嵌套的dependencies版本并没有继承过来。除此之外其他都和继承是一样的。他会继承dependencyManagement当中的版本管理,而且还会继承dependencies当中引用的依赖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lammps教程:斜交转正交的方法

大家好&#xff0c;我是小马老师。 本文介绍lammps斜交模型转正交模型的方法。 多数晶体的模型都能在网上下载到对应的cif文件&#xff0c;但很多cif文件初始结构不是正交的&#xff0c;如sio2的初始结构&#xff1a; 对这种结构进行扩胞后&#xff0c;得到的模型也是一个斜交…

计组唐书第八章CPU部分课后习题

参考文章 计算机组成原理&#xff08;第三版&#xff09;唐朔飞-第八章CPU的结构和功能-课后习题_计算机组成原理唐朔飞课后题答案_蓝净云的博客-CSDN博客 本文是对计算机组成原理的课后题再解析。 8.1CPU有哪些功能?画出其结构框图并简要说明每个部件的作用。 容易忘掉中…

openEuler之上的K3s ARM64集群管理

K3s是CNCF认证的轻量级Kubernetes发行版&#xff0c;在全球拥有广泛的安装量&#xff0c;主要由SUSE工程师在开源社区维护。K3s除了可以单独部署外&#xff0c;也可以通过Kubernetes管理软件Rancher进行管理。SUSE中国团队与欧拉社区合作&#xff0c;以RFO SIG协作方式推动Ranc…

优思学院|品质管理是做什么工作的?和六西格玛管理有什么关系?

品质管理&#xff08;或者质量管理&#xff09;是一种组织和管理企业活动的方法&#xff0c;旨在确保产品或服务的质量符合客户的期望和需求。它涉及制定和实施各种质量控制措施&#xff0c;以确保生产出的产品或提供的服务符合预期标准&#xff0c;并且能够持续不断地进行改进…

Moonbeam操作指南|如何使用Gelato创建自动化任务

Gelato是一个Web3去中心化自动化网络&#xff0c;允许开发者横跨多个基于EVM兼容区块链上自动化和连接任意的智能合约执行。&#x1f4d1;阅读中文版详细操作教程 举例来说&#xff0c;我们将使用MetaMask作为钱包。同时&#xff0c;您的钱包余额中需要有一些GLMR用于支付自动…

排序算法合集(2)

前言&#xff1a; 上一篇文章&#xff0c;我们已经讲完了冒泡排序&#xff0c;选择排序&#xff0c;插入排序和希尔排序。 那么我们今天来讲一下堆排序&#xff0c;快速排序和归并排序吧~ 堆排序&#xff08;Heap Sort&#xff09; 堆排序是一种基于完全二叉树的排序算法。堆…

ubuntu安装php8.1

ubuntu安装php8.1 设置apt库安装在 Ubuntu 22.04|20.04|18.04 上安装 PHP 8.1 扩展安装常用的php扩展完成后输入看扩展安装情况 重启php PHP8是PHP最新的Release版本&#xff0c;在这个版本也加入了很多新的功能。 但是在Ubuntu的默认apt库里&#xff0c;找不到PHP8&#xff0c…

Android14新权限机制

Android14新权限机制 在本文中&#xff0c;我们将了解 Android14 的新权限&#xff0c;该权限允许用户仅授予对选定媒体&#xff08;照片/视频&#xff09;的访问权限&#xff0c;而不是整个库。 这个新权限允许用户在我们的应用程序运行时授予部分访问权限 mediaAndroid14 or …

Unity3D:立方体贴图

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 立方体贴图 __立方体贴图__是六个正方形纹理的集合&#xff0c; 这些纹理代表环境中的反射。六个正方形组成一个包围着对象的虚构立方体的各面&#xff1b; 每个面代表沿世界轴方向…

colmap多相机重建多场景及数据库数据快速修改方法

1 colmap流程 1.1 新建项目 首先打开colmap&#xff0c;然后创建新的project&#xff0c;其中数据库目录和名称自己选定&#xff0c;注意不要将它放到图像目录下即可。然后images选择的是图像目录&#xff08;比如我这里是guangxi/section1&#xff09;&#xff0c;这个目录下…

聊天机器人简要理解

聊天机器人 身边的同事或多或少都在聊ChatGPT&#xff0c;这又使得学生时代训练模型的恐惧感开始支配我。说起聊天机器人&#xff0c;我们先熟悉一下不同对话系统的概念。 一、对话系统分类 1、单轮对话 单轮与传统的问答系统相类似&#xff0c;是智能对话系统的初级应用。…

时代变迁的缩影:从天涯BBS的沦落,到媲美EXCEL的WPS后辈的腾达

昔日王者&#xff0c;今朝黯然 “无法访问此网站” 陪伴我们青春的天涯论坛就此真的与我们相忘于天涯。 江湖路远&#xff0c;不知何日才能重逢&#xff1f; 这是第几个了&#xff1f; 那个人人自由创造的时代是否真的已经逝去&#xff1f; 近年来网易、凤凰等论坛相继关闭。…

Docker Harbor

目录 一、Docker Harbor概述 1、Harbor的优势 2、Harbor知识点 3、Docker私有仓库架构 二、Harbor构建Docker私有仓库 1、环境配置 2、案例需求 3、部署docker-compose服务 4、部署harbor服务 5、启动harbor ① 访问 ② 添加项目并填写项目名称 ③ 通过127.0.0.1来…

大江南北十三省,蓬门今始为君开,数字政府建设“实在”必行

引言&#xff1a; 推动数字中国建设是实现中国式数字化进程、抢占未来发展制高点的关键。为全面推动数字化转型在政府领域的纵深发展&#xff0c;各地领导不断进行数字化探索。其中&#xff0c;数字员工凭借流动的数据、流畅的体验&#xff0c;百姓少跑腿、数据多跑路特点&…

零基础也能轻松搭建Python环境和pycharm

目录&#xff1a;导读 引言 python环境安装 pycharm安装 设置 字体的大小&#xff1a; 关闭警告&#xff1a; 代码风格&#xff1a; 代码层级&#xff1a; ide与版本控制的整合&#xff1a; 插件安装&#xff1a;&#xff08;3个&#xff09; 介绍&#xff1a; 控制台&…

HJTB-9222跳闸闭锁继电器导轨安装 约瑟JOSEF

名称&#xff1a;跳闸闭锁继电器品牌&#xff1a;JOSEF约瑟型号&#xff1a;HJTB-9222额定电压&#xff1a;110、220V触点容量&#xff1a;250V/5A动作时间&#xff1a;≤10mS HJTB系列跳闸闭锁继电器 系列型号 HJTB-9222跳闸闭锁继电器 概述和应用 HJTB系列跳闸闭锁继电器…

NLP模型(四)——seq2seq模型与Attention机制介绍

文章目录 1. seq2seq模型介绍2. 模型计算2.1 LSTM结构单元2.2 seq2seq计算流程 3. Attention机制3.1 引入Attention3.2 计算全局对齐权重 4. seq2seq加入Attention机制5. 模型理解6. 模型细节6.1 解码器结构6.2 加入信息方式 参考文章 1. seq2seq模型介绍 传统的RNN只能处理 1…

诺派克ROPEX热封控制器维修RES-407/RES-406

德国ROPEX热封控制器维修型号包括&#xff1a;RES-401&#xff0c;RES-402&#xff0c;RES-403&#xff0c;RES-406&#xff0c;RES-407&#xff0c;RES-408&#xff0c;RES-409&#xff0c;RES-420&#xff0c;RES-440&#xff0c;MSW-2&#xff0c;PEX-W3&#xff0c;PEX-W4&…

Android 源码浅析:Leakcanary 内存泄漏检测的好帮手

我们一起来分析一下大名鼎鼎的 Leakcanary&#xff0c; 想必作为 Android 开发都多多少少接触过&#xff0c;新版本的 Leakcanary 也用 Kotlin 重写了一遍&#xff0c;最近详细查看了下源码&#xff0c;分享一下。 tips&#xff1a;本来是只想分析下内存泄漏检测部分&#xff…

c语言Have Fun with Numbers

题目 Have Fun with Numbers Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers …