安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

如何优雅替换第三方依赖中的类?

2月6日 虎狼旗投稿
  在项目中需要依赖其他第三方的jar包,但有时我们需要扩展第三方jar的功能,或者修复依赖中已知还未修复的bug,但碰到过很多种情况,第三方类库中并没有提供对应的扩展点导致无法优雅的使用继承等方法对代码进行改造。
  如果第三方类库并没有提供扩展点,我们通常会使用如下两种办法来进行二次开发:将第三方jar的源工程下载下来,放入maven中,重新进行修改,并发布在私有仓库中直接将需要修改的代码复制到当前工程,进行修改
  如果这个第三方类库是全公司都需要使用的,使用第一种无疑是最好的,不过也带来了一定的维护成本。
  如果只是单个项目需要引入,直接将代码拷贝到工程中,直接修改,但编译后的文件会在当前classpath路径下生成对应的class文件,能否将这些修改的class打入到最终的第三方jar类库。2、通过插件体会Jar包中的类
  下面,我们介绍通过maven插件,将修改的类代码类,直接替换jar中的类。2。1mavendependencyplugin
  mavendependencyplugin简单说明情况如下:插件说明:依赖项插件提供了操作工件的功能。它可以将项目从本地或远程存储库复制和或解压缩到指定位置。官方地址使用命令:从存储库中检索项目列表并将其解压缩到定义位置的目标。具体命令如下:dependency:unpack操作原理
  这个命令可以将我们指定的dependency解压到class目录中,然后设置不覆盖本地项目相同class文件(类的全限定名相同),就达到了本地文件替换源jar中class文件的目的。2。2实操
  计划将org。apache。flink:flinkkubernetes2。11:1。14。3中的KubernetesClusterClientFactory类,将createClusterDescriptor方法第一行输出日志。
  在需要的代码中添加一行日志如下图所示:packageorg。apache。flink。。。。A{linkClusterClientFactory}foraKubernetescluster。InternalpublicclassKubernetesClusterClientFactoryextendsAbstractContainerizedClusterClientFactoryString{。。。OverridepublicKubernetesClusterDescriptorcreateClusterDescriptor(Configurationconfiguration){新添加代码System。out。println(configuration:configuration)checkNotNull(configuration);if(!configuration。contains(KubernetesConfigOptions。CLUSTERID)){finalStringclusterIdgenerateClusterId();configuration。setString(KubernetesConfigOptions。CLUSTERID,clusterId);}returnnewKubernetesClusterDescriptor(configuration,FlinkKubeClientFactory。getInstance()。fromConfiguration(configuration,client));}
  为了在打包的时候修改的代码能打入到第三方jar包,需要修改pom文件,对应的代码如下:propertiesflink。version1。14。3flink。versionscala。binary。version2。11scala。binary。versionpropertiesdependenciesdependencygroupIdorg。apache。flinkgroupIdflinkkubernetes{scala。binary。version}artifactIdversion{flink。version}versiondependencydependenciesbuildpluginsplugingroupIdorg。apache。maven。pluginsgroupIdmavendependencypluginartifactIdexecutionsexecutionidunpackidphasegeneratesourcesphasegoalsgoalunpackgoalgoalsconfigurationgroupIdorg。apache。flinkgroupIdflinkkubernetes{scala。binary。version}artifactIdoverWritefalseoverWriteoutputDirectory{project。build。directory}classesoutputDirectoryartifactItemartifactItemsconfigurationexecutionexecutionspluginpluginsbuild
  接下来通过maven打包命令打包:mvmcleaninstall
  从class目录中查看KubernetesClusterClientFactory,发现代码已经是我们修改后的类。同时,当前项目编译的jar包,类也已经被替换成我们自定义的类,目标达成。
投诉 评论 转载

声姿理想ONEOTA2。2语音再升级,如真人般自由对话在造车新势力竞争愈发激烈的当下,车机系统已逐渐成为各大车厂展示实力的体现。日前,理想ONE发布OTA2。2版本。本次发布的理想同学搭载了思必驰的语音识别、语义理解底层技术……腾讯新推儿童版微信,作为大人也很想要啊近日,微信官网上线了微信儿童手表版,引起了不少朋友的关注。很多大孩子也表示,非常想要这个儿童版微信。那么这个新版本跟现有的手机端、电脑端究竟有什么区别呢?今天速小收……听力重度听损能配助听器治疗吗?助听器可以帮助您聆听,也能适当延缓听力下降,但是无法治愈听力的,虽然这样,还是建议早点验配助听器,这样可以有效提高听觉能力,也能提高生活质量。助听器只是辅助仪器并没有治疗……苹果计划在洛杉矶地区建新园区加大流媒体内容创作投资财联社(上海,编辑周玲)讯,美东时间周五(8日),苹果公司表示,将在美国洛杉矶和卡尔弗城(CulverCity)交界处建立一个新的区域总部,这表明苹果公司将继续加大投资,专注流……港股异动丨赣锋锂业AH齐飚高比能固态电池E70示范运营车首发1月22日,由东风汽车公司与赣锋锂业合作开发的东风赣锋高比能固态电池E70示范运营车在江西省新余市全球首发。东风风神E70在国内率先打响固态电池产业化第一枪,拉开了固态电池迈进……旗舰芯片的新赛道,终于搞清晰了进入5G时代,智能终端芯片几乎一年一跨步。2021年,旗舰芯片的制程跨越到6nm及以下时代,6nm制程的芯片成为市场的主流选择;2022年,基于台积电、三星等芯片代工厂工艺提升……还等啥小米平板,联想平板首发骁龙870,三种型号全面满足需求因为疫情的关系,平板市场再次被激活。不少手机厂商今年也是纷纷宣布回归。从今年第一季度的市场份额来看,全球平板依旧是iPad一家独大。华为受限之后,第一季度的销量大降。加上其他品……赚钱项目实操截拳道之截流术简单的来说,截拳道经历三个阶段模仿糅合开创成长也是分阶段进行的,人在每一个阶段都会有不同的题目,克服了一个,迎来另一个,螺旋式上升,盘旋着进步。所有的大bos……价值洼地工业互联网的投资机会数字经济是十四五期间的国策,也是中国经济转型最重要的部分,其两个底座分别是工业互联网和IPV6,三个基础分别是芯片、屏幕和操作系统,有了这些才可能形成数字经济的基石。5G……如何优雅替换第三方依赖中的类?在项目中需要依赖其他第三方的jar包,但有时我们需要扩展第三方jar的功能,或者修复依赖中已知还未修复的bug,但碰到过很多种情况,第三方类库中并没有提供对应的扩展点导致无法优……鸿蒙系统是不是耗电快了点?谢邀,本人是前天更新的鸿蒙系统,用的是mate30,8128,5G版本的,更新之后除了感觉丝滑之外,就是电量感觉比以前更加的耐用些了,本人不是重度游戏玩家,一天一冲足够咯。……iPhone12最新价格确认,A14芯片IP68防水,价格跌时间刚刚来到2022年,其实有不少人不少行业都在做年终总结吧,其实回顾整个2021年,对于手机行业来说,是有特殊意义的一年,因为至少在处理芯片方面,Android阵营集体翻车了……
10个神奇有趣的微信小程序,打开新世界大门LOGO变RGB雷蛇新款真无线耳机了解下白酒新能源半导体的操作策略海创会项目风电场智能扇区管理技术研发及应用充电器和数据线,两者谁才是决定快充的因素?快充损伤电池吗?联想VS华为,你看好谁?4000毫安电池的手机有那几部处理器好一点的?电脑装Win10还是Win7Snapdragon8Gen2最新爆料明年年中量产宝能新能源汽车的出路500强高管辞职创业,利用无人驾驶技术推动矿区运输智能化争夺电动车之王上汽大众ID。3登场顶配不超20万元

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利