maven-两大依赖原则

【华为鸿蒙3.0/荣耀安卓12使用VMOS Pro的激活方式 方法二】 关于荣耀手机安卓12如何解除进程限制,这里提供以下教程供小伙伴们参考。 阅读详情

两大依赖原则-深度原则和顺序原则

1、深度不同
最终使用的是最浅的,或者说路径最短的。

2、深度相同
按声明顺序,位置在最前面的优先级最高。


两大依赖原则对间接依赖也生效。


为什么有依赖原则,打包的时候还是会出现多个版本jar?

因为有可能jar的组的名字不一样,比如有的公司把jar组名字改为公司名字,如果组名字不一样,就算是不同的jar,所以导致会出现多个版本的jar,但是实际上是不同的jar。

依赖管理标签

会影响浅路径原则和申明顺序原则,导致原则失效。即dependencyManagement的优先级是最高的。


优点

可以写死指定jar版本,并且这里的优先级最高。

<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>3.1</version>
			</dependency>

但是缺点也是这里,有的人不熟,不知道修改这里写死的版本,导致升级版本之后一直没有生效,排除半天,却找不到原因。

最佳实践

如果有冲突,只使用直接依赖。而且最好间接依赖都排除。

间接依赖,升级版本之后,始终不生效

1.问题
间接依赖的jar,修改之后,没有生效。比如,a项目依赖了b.jar,b.jar又依赖了c.jar,现在升级了c.jar,a项目的c.jar版本始终是旧的。

2.原因
使用了依赖管理标签,并且在依赖管理标签里把jar的版本写死了,导致间接依赖升级版本之后但是没有生效。

3.解决方法
依赖管理标签,写死了,修改即可。所以,依赖管理标签,是第一优先级。

排除粒度

1、排除单个jar
2、排除组的jar
3、排除所有依赖jar


<dependency>
    <groupId>com.xxx</groupId>
    <artifactId>xxx-common-util</artifactId>
    <version>1.0.4-SNAPSHOT</version>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId> //排除整个组
            <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.dangdang</groupId>
            <artifactId>*</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>*</artifactId>
        </exclusion>
        
        <exclusion>
            <artifactId>slf4j-log4j12</artifactId> //排除单个jar
            <groupId>org.slf4j</groupId>
        </exclusion>
        <exclusion>
            <artifactId>log-slf4j-logback</artifactId>
            <groupId>kalvan.log</groupId>
        </exclusion>
        
        <exclusion>
            <artifactId>cat-client</artifactId>
            <groupId>com.dianping.cat</groupId>
        </exclusion>

        <exclusion>
            <artifactId>hibernate-core</artifactId>
            <groupId>org.hibernate</groupId>
        </exclusion>
        <exclusion>
            <artifactId>hibernate-jpa</artifactId>
            <groupId>org.hibernate</groupId>
        </exclusion>

        <exclusion>
            <artifactId>hibernate-core</artifactId>
            <groupId>paylib.hibernate</groupId>
        </exclusion>
        <exclusion>
            <artifactId>hibernate-jpa2.0</artifactId>
            <groupId>paylib.hibernate</groupId>
        </exclusion>

        <exclusion>
            <artifactId>*</artifactId>
            <groupId>paylib.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>
<exclusion> 
            <artifactId>*</artifactId>
            <groupId>*</groupId> //排除所有jar
        </exclusion>

参考

https://www.dazhuanlan.com/2019/08/15/5d551181bf3a7/

SAP OData 开发从入门到提高教程的目录 笔者 18 年的 SAP 技术开发生涯,对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。 阅读详情

相关推荐

arcgis密度分析

密度分析 密度分析是指根据输入的要素数据集计算整个区域的数据集状况,从而产生一个连续的密度表面。通过计算密度,将每个采样点的值散布到整个研究区域,并获得输出栅格中每个像元的密度值。在 ArcGIS 中,分布密度的计算方法有点密度分析、线密度分析和核密度分析三种。 1.点密度分析 导入实验数据居民点图层和道路图层 在自定义里勾选空间分析模块Spatial Analyst 点击空间分析工具中密度分析内的点密度分析, 参数设置如下,其中输出像元大小表示输出栅格数据集的像元大小。值越小.

Jasenjane的博客 2万+

IDEA怎样找一个jar是怎么被间接引入的-maven高级

项目有时候打war包时会发现打入一些间接的jar,甚至打入同一个jar的两个不同版本,比如jackson-annotation2.9.3 jackson-annotation2.8.1,具体加载哪个包里的类根据maven就近原则。如果加载了不想要的哪个版本可能就classNotFound或no such method了。这时就需要排除掉不要得版本。关键是这么找这个jar是哪个jar间接引入的呢...

MJ的博客 2737

【HALCON+C#实战】3D点云测量系统开发全攻略:从源码解析到工业应用

本文详细介绍了基于HALCON和C#开发3D点云测量系统的全流程,从环境搭建、核心算法实现到工业应用优化。通过源码解析和实战技巧,帮助开发者解决点云数据处理、几何测量及系统集成中的常见问题,提升工业检测的精度与效率。

brown的博客 209

maven升级漏洞依赖jar包

如果只是想打印当前项目的依赖树,最简单的方法就在在该项目(包含pom)的目录下执行maven命令,要注意的点是:1.执行的目录下必须包含pom文件,且多模块的要在父pom所在目录下执行;2.需要在powershell下执行(idea里支持) 如果想打印出来并放到一个文件里,那么可以在项目目录下执行该命令 执行完上述命令后,就可以到对应目录下找到那个文件,里面就是你项目里的所有依赖。 这里简单提供一个解析上面txt的文件并转成xml的代码 2.判断依赖是否有漏洞 上maven仓库上搜索对应的artifac

翱翔于知识的天空 1万+

SAP Fiori单点登录避坑指南:从SAML原理到实战,解决‘第一次登录跳转主页失败’和‘偶发进不了单点’

本文深入解析SAP Fiori单点登录(SSO)的SAML实战与疑难排查,涵盖SAML协议核心机制、SICF登录优先级控制及安全诊断工具的高级用法。针对‘首次登录跳转主页失败’和‘偶发单点登录失效’问题,提供从配置优化到生产环境稳定运行的全面解决方案,助力企业高效实现数字化转型。

weixin_29327977的博客 405

在昇腾910B服务上部署搭建适配PDF解析工具Mineru2.5开源项目

本文介绍了在昇腾910B服务器上部署开源PDF解析工具Mineru2.5的过程。首先从昇腾社区下载mindie镜像并运行容器,安装系统依赖。针对部署过程中遇到的多个报错问题(如torchvision与torch版本不匹配、昇腾软件栈与NumPy 2.0不兼容等),提供了具体解决方案和兼容版本。通过设置环境变量、安装指定版本的Python依赖包,成功部署Mineru项目并下载模型。最后运行测试,验证了在NPU设备上运行pipeline的可行性。整个过程详细记录了版本适配和错误处理方法,为类似部署场景提供了参考

一起加油吧 2163

maven查看jar包的间接依赖

maven查看jar包的间接依赖

dd2016124的博客 571

深入剖析STM32F103 I2C总线死锁问题及高效应对策略

本文深入剖析了STM32F103硬件I2C总线在轮询模式下发生死锁的根本原因,即硬件状态机的预取机制与软件响应速度不匹配。文章提供了高效的解决方案,包括在轮询模式下提前发送NACK/STOP信号、降低总线速度,以及治本的中断与DMA应用策略,帮助开发者根据项目需求选择最合适的方案,彻底解决这一经典硬件缺陷问题。

weixin_29184371的博客 206

问题记录-maven依赖升级或替换(简单版)

0:只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快(最好不要压缩)执行下面这个命令,会将当前项目的信息打印出来,那个jar依赖了什么其它的jar可以看的非常的清楚。其实我们也可以偷懒直接去替换jar 包里面的依赖,然后重新压缩成jar文件。-M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m参数。-u:更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)-x:展开 JAR 文件包的指定文件或者所有文件。-c:创建新的 JAR 文件包。

qq_43259860的博客 5063

【华为2021校招】笔试题【通用硬件】

时间:2020/07/15 19:00 时长:60min 题型:40单选+5多选 难度:中等 考察范围:模电、数电、SI、EMC、电源、微机原理、计算机网络、材料

Jkcia的博客 4万+

Arduino 系列:Arduino Due 系列 (基于 ATSAM3X8E)_(5).电源管理与电压调节

电源管理与电压调节是确保嵌入式系统稳定性和可靠性的关键环节。通过合理选择电源输入方式、使用高效的电压调节器、设计适当的滤波电路和实施动态电源管理,可以有效提高系统的性能和寿命。同时,使用电源调试工具和编写调试代码,可以帮助开发者及时发现和解决问题。希望本文档能为使用 Arduino Due 的开发者提供有用的信息和指导。

2401_87715305的博客 1308

jar包依赖漏洞升级思路

jar包漏洞升级常见思路和处理流程

qq_32590535的博客 3127

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Maven 依赖调解的两大原则

Maven 依赖调解是 Maven 解决项目中多个依赖版本冲突的机制。当项目直接或间接依赖了同一个库的不同版本时,Maven 需要决定最终使用哪个版本。最短路径优先、先声明优先。

心有谦谦结 375

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Maven 重复依赖的两大原则

解决具体冲突的时候可以通过mvn dependency:tree 打印依赖树 当一个项目中出现重复的依赖包时,maven 2.0.9之后的版本会用如下的规则来决定使用哪一个版本的包: 最短路径原则 比如有如下两个依赖关系: A -&gt; B -&gt; C -&gt; D(V1) F -&gt; G -&gt; D(V2) 这个时候项目中就出现了两个版本的D,这时maven会采用最...

u010325193的博客 2061

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Maven依赖两大原则

Maven依赖两大原则

xiaokanfuchen86的博客 246

maven传递性依赖的原则

最短路径优先”意味着项目依赖关系树中路径最短的版本会被使用。例如,假设A、B、C之间的依赖关系是A->B->C->D(2.0)和A->E->D(1.0),那么D(1.0)会被使用,因为A通过E到D的路径更短。

小小踏浪 431

maven依赖原则

使用maven的程序员都会遇到一个问题,那就是maven依赖冲突的问题,这会导致ClassNotFound或者MethodNotFound这样的异常。其实只要明白maven依赖的根本性的原则就不怕这样的问题了。 一、maven依赖原则 1.间接依赖路径最短优先  一个项目test依赖了a和b两个jar包。其中a-b-c1.0   , d-e-f-c1.1   。由于c1.0路径最短,

顾翰翔的博客 6874

Maven依赖冲突

比如类 C 在 Jar 包 A、B 中都存在,且两个版本的 C 都出现在相同级别(Bootstrap、Extension、Application等)的类路径下,那么类加载的先后顺序就决定了 JVM 选择的最终版本(根据双亲委派机制,先被加载的类会阻止后面的类继续加载,防止核心类被覆盖掉),选择了错误的 C 会导致出现上述第二类依赖冲突。为了解决这类问题,需要把不是目标类的那个依赖排除。先来后到原则:当依赖链长度相同时,即A-X(1.0)和A-X(2.0) 的情况,会按照依赖的声明顺序决定采用哪个版本。

weixin_44161478的博客 555

maven依赖jar包调节原则

maven 自动按照下边的原则调解: 1、第一声明者优先原则 在 pom 文件定义依赖,先声明的依赖为准。 测试: 如果将上边 spring-webmvc 和 spring-context 顺序颠倒,系统将导入 spring-beans-5.0.2。 分析: 由于 spring-webmvc 在前边以 spring-webmvc 依赖的 spring-beans-5.0.2 为准,所以最终 spring-beans-5.0.2 添加到了工程中。 2、路径近者优先原则 例如:还是上述情况,spring-con

Hui_Hong_TaiLang的博客 562

Maven_6_依赖传递的两个原则

  1.第一声明者优先原则谁先在pom.xml中申明,就用谁的。跟坐标代码的顺序有关测试:添加struts2-spring-plugin(2.3.24)在前,spring-context(4.2.3.RELEASE)在后。 结果 如果将上边struts-spring-plugins和spring-context顺序颠倒,系统将导入spring-beans-4.2.3。 结果: 分析:由于sprin...

StrawBerry_Uncle的博客 650

Maven pom中optional配置项详解及依赖调解原则

情况行为(默认)依赖会传递给下游项目依赖仅当前项目可用,不会传递当前项目和依赖项目都依赖同一包Maven 按“路径最近”原则选择版本可选依赖 + 下游未显式引入下游项目不包含该依赖<optional>是一种“克制”的设计,它让依赖管理更清晰、更可控,避免不必要的依赖传递,是构建高质量、可复用库的重要手段。

学亮编程手记 847

maven依赖策略

一. Maven依赖仲裁(Dependency Mediation):第一原则:最短路径优先原则第二原则:第一声明优先原则,在依赖路径长度相等的前提下,在POM中依赖声明最靠前的依赖优先例如,项目A有这样的依赖关系: 1. A -&gt; B -&gt; C -&gt; X(1.0),A -&gt; D -&gt; X(2.0),X(1.0)路径长度为3,X(2.0)路径长度为2,根据第一原则,X...

pansanday的专栏 977

maven依赖的版本冲突处理以及常见的依赖分析

本文介绍了Maven依赖管理中版本冲突问题的解决方案。主要内容包括:1)传递性依赖的定义和Scope作用域对传递性的影响;2)依赖调解的两种原则(路径最近优先、第一声明优先);3)通过dependency:tree命令分析依赖关系;4)使用exclusions标签排除不需要的依赖;5)最佳实践推荐使用dependencyManagement统一管理依赖版本。文章系统性地整理了Maven处理版本冲突的核心机制和实用技巧,帮助开发者有效解决依赖管理问题。

qq_37135406的博客 902
上一篇: 集中日志系统ELK
下一篇: 数据库连接池监控
Java个体户
博客等级 码龄6年 6粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值