解决两个依赖的全限定类名完全相同问题

介绍

我们会经常在maven项目中,依赖第三方的sdk或者api。当依赖的多了就会发生一个问题。例如有2个依赖的某个类的包名和类名完全相同,但这两个依赖的这个类的方法不完全相同。这就不好办了。用一个,另一个就会有问题。

解决

至于网上说的那种自定义类加载器也不现实,因为这两个依赖的类的方法不相同。就算用自定义类加载器,那代码本身不还是报错吗。

所以这里我们借用maven的一个插件,叫maven-shade-plugin

案例

<dependencies><dependency><groupId>com.yun1</groupId><artifactId>oos-yun1-sdk</artifactId><version>6.5.0</version></dependency><dependency><groupId>com.yun2</groupId><artifactId>oos-yun2-sdk</artifactId><version>1.7.0</version></dependency>
</dependencies>
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.2.4</version> <!-- 使用最新版本 --><executions><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><artifactSet><includes><!-- 指定依赖 --><include>com.yun2:oos-yun2-sdk</include></includes></artifactSet><relocations><relocation><!-- 原先包名 --><pattern>com.yun</pattern><!-- 修改后包名 --><shadedPattern>com.my.yun</shadedPattern></relocation></relocations></configuration></execution></executions></plugin></plugins>
</build>
  • 比如说依赖了两个依赖yun1-sdk、yun2-sdk。这两个sdk都有个类叫 com.yun.FileOs

这时就可以通过maven的插件maven-shade-plugin,指定要修改的依赖,然后将之前包名可以指定为修改后的包名。修改包名的源码会被打包在项目中。这样yun2-sdk中就变成了com.my.yun.FileOs 这样两个类就不冲突了。

注意

maven-shade-plugin插件只会在进行maven打包时候生效。在本地编译器idea启动项目,插件还是不生效的,代码依旧会冲突报错。所以我们可以将这两个依赖和插件放到另一个项目组件包中,将这个组件包打好包后上传到maven私服中。然后要调用此两个sdk的项目依赖这个打好的组件包。这样的话本地编译器idea启动也是没有问题的。

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

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

相关文章

Android自动化测试中使用ADB进行网络状态管理!

技术分享&#xff1a;使用ADB进行Android网络状态管理 Android自动化测试中的网络状态切换是提高测试覆盖率、捕获潜在问题的关键步骤之一&#xff0c;本文将介绍 如何使用ADB检测和管理Android设备的网络状态。 自动化测试中的网络状态切换变得尤为重要。 网络状态查询 adb s…

【23真题】复录比高达2.24,但题目很棒!

今天分享的是23年广东工业837的信号与系统试题及解析。注意官方不公示真题&#xff0c;所以这套试卷为回忆版本。 本套试卷难度分析&#xff1a;22年广东工业837考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取&#xff01;平均分107.93&#xff…

Java中的Lambda表达式

lambda表达式是一个可传递的代码块&#xff0c;可以在以后执行一次或多次。 1.lambda表达式的语法 eg&#xff1a;有如下lambda表达式&#xff1a; (int a, int b) -> {return ab}; 这个表达式的本质是一个函数。 一般的函数类似如下&#xff1a; int add(int a, int …

我的创作纪念日--成为创作者的 第1825天(5年) 啦

醉颜凉 &#xff0c;不知不觉今天已经是你成为创作者的 第1825天&#xff08;5年&#xff09; 啦。 机缘 1、作为一个创作者&#xff0c;我最初成为创作者的初心是出于对技术的热爱和对分享的渴望。我希望通过创作&#xff0c;将自己在实战项目中的经验分享给大家&#xff0c;…

ECONGU4280 Corporate Finance

ECONGU4280 Corporate Finance WeChat: zh6-86

P8649 [蓝桥杯 2017 省 B] k 倍区间(前缀和+优化(桶分类))

分析&#xff1a; &#xff08;1&#xff09;任意连续子序列可用两个前缀和的差来表示 &#xff08;2&#xff09;判断该子序列是否为k的倍数 p1-p2 模 0 (mod k) 等价于&#xff1a;前缀和模 k 是否同余 &#xff08;3&#xff09;同余的任意两前缀和组合的序列均满足…

el-select多选multiple数据无法删除,回显成功,但无法编辑,选中和删除都没反应

原因&#xff1a; 回显的数据是从后台接口得来&#xff0c;由于数据层次太多&#xff0c;导致render函数没有自动更新&#xff1b;需要手动强制刷新 解决方案&#xff1a; 使用 change “$forceUpdate()” 强制刷新视图 代码&#xff1a; <el-select multiple filtera…

WEB安全之Python

WEB安全之python python-pyc反编译 python类似java一样&#xff0c;存在编译过程&#xff0c;先将源码文件*.py编译成 *.pyc文件&#xff0c;然后通过python解释器执行 生成pyc文件 创建一个py文件随便输入几句代码(1.py) 通过python交互终端 >>>import py_compil…

CISO在2024年应该优先考虑七项安全任务

专业安全媒体CyberTalk.org主编Shira Landau日前表示&#xff1a;现代企业的CISO们在2024年必须做出改变&#xff0c;要更多关注于企业整体安全路线图的推进与实现&#xff0c;让网络安全工作与业务发展目标保持更紧密的一致性。 首席信息安全官&#xff08;CISO&#xff09;是…

采购业务中的组织概述

目录 一、采购和库存管理中组织单位的概览二、企业的组织结构三、采购中组织结构3.1采购组织3.2采购组 一、采购和库存管理中组织单位的概览 1、 客户端&#xff1a;在SAP ERP系统中&#xff0c;客户端通过三位数字定义&#xff0c;并代表这独立的数据记录和独立的业务流程。客…

MYSQL加密和压缩函数详解和实战(含示例)

MySQL提供了多种加密和压缩方式&#xff0c;可以帮助保护数据库中的敏感数据。以下是一些常见的MySQL加密和压缩方法参考&#xff1a; 建议收藏以备后续用到查阅参考。 目录 一、AES_ENCRYPT AES加密 二、AES_DECRYPT AES解密 三、COMPRESS 压缩字符串 四、UNCOMPRESS 解压…

JavaScript WebApi 一(详讲)

基础知识在前面的部分已经讲过了&#xff0c;大家如果没有学习过JavaScript的可以去看一下 1.DOM 引入 在JavaScript中&#xff0c;DOM&#xff08;文档对象模型&#xff09;提供了一种表示和操作HTML文档的方式。在DOM中&#xff0c;文档被表示为一个由节点组成的树形结构。…

nodejs最新电商jd m端h5st 4.2签名算法4.2版本逆向,jd API接口,jd商品数据采集

前言&#xff1a; jd m端使用最新的h5st 4.2签名算法&#xff0c;与h5st 4.1版本有很大的不同。在这儿分析一下&#xff0c;供大家参考。 一、目标地址(Base64解码) aHR0cHM6Ly9zby5tLmpkLmNvbS93YXJlL3NlYXJjaC5hY3Rpb24/a2V5d29yZD0lRTklOTklQTQlRTYlQjklQkYlRTYlOUMlQkEmc2…

java编程:给定⼀组正整数数组M,找出M数组中N项和为给定数S。如果有多对N项数字的和都等于 S,则输出N个数的乘积最⼩的哪⼀项,没有则返回空

题目&#xff1a; 编程题&#xff1a;给定⼀组正整数数组M&#xff0c;找出M数组中N项和为给定数S。如果有多对N项数字的和都等于 S&#xff0c;则输出N个数的乘积最⼩的哪⼀项&#xff0c;没有则返回空&#xff1b; 程序如下&#xff1a; 测试主程序&#xff1a; 先看下测试示…

Linux系统centos7防火墙firewall开放IP及端口命令

CentOS7使用的是firewall防火墙&#xff0c;不再是原来的iptables 防火墙基础命令 1&#xff1a;查看firewall防火墙状态 firewall-cmd --state //或 systemctl status firewalld2&#xff1a;打开防火墙 systemctl start firewalld3&#xff1a;关闭防火墙 systemctl sto…

如何利用CHAT 进行扩写?

问CHAT&#xff1a;开发利用这些矿产资源的同时&#xff0c;我们也不能忽视环境保护的重要性。要以科学、合理、绿色环保的原则为指导&#xff0c;保护好帕米尔高原的生态环境&#xff0c;实现其可持续发展&#xff0c;以取得全局上的真正利益&#xff0c;按照以上文字进行简单…

实体类转SQL工具类

主要的目标是简化开发人员在有实体类的情况下时做的重复性工作&#xff0c;提高开发效率。 单个实体类的转换工具类 1.EntityToTableConverter工具类 import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; import java.math.BigDecimal…

java 偏向锁 10个课题

于Hotpot JVM中的偏向锁,大部分开发者都比较熟悉或者至少听说过。那我们用下面10个关于偏向锁的进阶问题,检验一下自己离精通还有多远。 如何判断当前锁对象为偏向锁偏向锁如何判断锁重入当代码运行至synchronized修饰的代码块时,符合什么条件才会尝试获取偏向锁线程进入偏向…

esp32-s3部署yolox_nano进行目标检测

ESP32-S3部署yolox_nano进行目标检测 一、生成模型部署项目01 环境02 配置TVM包03 模型量化3.1预处理3.2 量化 04 生成项目 二、烧录程序 手上的是ESP32-S3-WROOM-1 N8R8芯片&#xff0c;整个链路跑通了&#xff0c;但是识别速度太慢了&#xff0c;20秒一张图&#xff0c;所以暂…

3D数字孪生场景编辑器

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 数字孪生的强大功能来自于将真实世界的资产与真实世界的数据联系起来&#xff0c;因此您可以…