无锡做网站优化价格,上海网站建设的价格低,郑州网站搜索排名,安卓游戏开发软件介绍
我们会经常在maven项目中#xff0c;依赖第三方的sdk或者api。当依赖的多了就会发生一个问题。例如有2个依赖的某个类的包名和类名完全相同#xff0c;但这两个依赖的这个类的方法不完全相同。这就不好办了。用一个#xff0c;另一个就会有问题。
解决
至于网上说的…介绍
我们会经常在maven项目中依赖第三方的sdk或者api。当依赖的多了就会发生一个问题。例如有2个依赖的某个类的包名和类名完全相同但这两个依赖的这个类的方法不完全相同。这就不好办了。用一个另一个就会有问题。
解决
至于网上说的那种自定义类加载器也不现实因为这两个依赖的类的方法不相同。就算用自定义类加载器那代码本身不还是报错吗。
所以这里我们借用maven的一个插件叫maven-shade-plugin
案例
dependenciesdependencygroupIdcom.yun1/groupIdartifactIdoos-yun1-sdk/artifactIdversion6.5.0/version/dependencydependencygroupIdcom.yun2/groupIdartifactIdoos-yun2-sdk/artifactIdversion1.7.0/version/dependency
/dependencies
buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdversion3.2.4/version !-- 使用最新版本 --executionsexecutionphasepackage/phasegoalsgoalshade/goal/goalsconfigurationartifactSetincludes!-- 指定依赖 --includecom.yun2:oos-yun2-sdk/include/includes/artifactSetrelocationsrelocation!-- 原先包名 --patterncom.yun/pattern!-- 修改后包名 --shadedPatterncom.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启动也是没有问题的。