首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Maven Shade插件没有重新定位commons-logging

Maven Shade插件是一个用于构建可执行的Java应用程序的插件。它可以将项目的所有依赖打包到一个可执行的JAR文件中,以便于部署和运行。

在使用Maven Shade插件时,有时会遇到commons-logging库没有被重新定位的问题。这是因为commons-logging库是一个常见的依赖库,许多项目都会使用它。当使用Maven Shade插件打包项目时,默认情况下,它会将所有的依赖库都打包进最终的JAR文件中,包括commons-logging库。

然而,由于commons-logging库在不同的项目中可能存在不同的版本,这可能会导致冲突和运行时错误。为了解决这个问题,可以使用Maven Shade插件的重新定位功能。

重新定位是指将一个依赖库的类文件从其原始位置移动到另一个位置,以避免与其他库的冲突。对于commons-logging库,可以将其重新定位到另一个包名下,以避免与其他项目中的commons-logging库冲突。

要在Maven Shade插件中重新定位commons-logging库,可以在项目的pom.xml文件中添加以下配置:

代码语言:txt
复制
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.2.4</version>
      <configuration>
        <relocations>
          <relocation>
            <pattern>org.apache.commons.logging</pattern>
            <shadedPattern>com.example.shaded.commons.logging</shadedPattern>
          </relocation>
        </relocations>
      </configuration>
    </plugin>
  </plugins>
</build>

上述配置将commons-logging库的类文件从"org.apache.commons.logging"包下重新定位到"com.example.shaded.commons.logging"包下。这样,在打包时,Maven Shade插件会将重新定位后的commons-logging库打包到最终的JAR文件中,避免与其他项目中的commons-logging库冲突。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(Mobile):https://cloud.tencent.com/product/mobile
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Maven打包之maven-shade-plugin

打包是一个比较头疼的事情,默认maven打包的结果只包含项目本身的代码,如果要执行代码,还得带上依赖。maven-shade-plugin插件就能够帮我们把项目依赖的包也打进最终文件。...shade打包过程 shade插件绑定在maven的package阶段,他会将项目依赖的jar包解压并融合到项目自身编译文件中。...--只包含该项目代码中用到的jar,在父项目中引入了,但在当前模块中没有用到就会被删掉--> true...--重新定位类位置,就好像类是自己写的一样,修改别人jar包的package--> <relocation...如果项目要求不能融合或者融合会出错,那么建议使用assembly插件打包。 参考 Apache Maven Shade Plugin maven-shade-plugin 简书

15.7K30

spring-boot-starter大力出奇迹

没有进行探索了,那么本文我们就来看看这里面到底都有啥,把大力出奇迹的常见spring-boot-starter来聊一聊,以便更好地使用SpringBoot....首先映入眼帘的是:标签,熟悉Maven的朋友都知道,这个标签用来定义要继承的父pom的信息,它用来定义SpringBoot项目可能用到的依赖和插件声明以及一些资源文件声明...依赖以及spring-boot-maven-plugin插件一样,父pom.xml的源码如下: org.apache.maven.plugins maven-shade-plugin...那么这样看来我们自己的SpringBoot项目中的pom.xml文件就剩下显眼的两个依赖以及一个插件了(没有指定版本号的原因前面已经解释了),那我们接下来就来聊一聊这些非常重要的spring-boot-starter

94920

Maven依赖Jar冲突排查及解决

) 冲突检测插件 IDEA中安装Maven Helper插件。...当我们排除依赖后直接点击Reimport重新引用依赖,但是这时候页面可能不刷新,我们可以再次点击Reimport,或者点击Refresh UI。...定位方式 在IDEA中(快捷键Ctrl+N)查找异常栈中提示缺失的类在哪些版本的jar包中有。...Maven Helper插件 解决冲突有两种方式 检测冲突的插件升降版本解决 Jar包隔离 包名替换 归纳了解了几种业内的解决方案如下,各有优劣 spring boot方式,统一管理各个组件版本,简洁高效...shade 也有maven插件,通过更改jar包的字节码来避免jai包冲突,jar包冲突的本质是类的全限定名(包名+类名)冲突了,通过全限定名不能定位到你想用的那个类,maven-shade插件可以更改

1.5K40

聊聊如何避免多个jar通过maven打包成一个jar,多个同名配置文件发生覆盖问题

如果不进行处理,直接打包,就会出现同名配置文件覆盖的情况 本文就是要来聊聊当多个jar合并成一个jar,如何解决多个同名配置文件覆盖的情况 解决思路 通过maven-shade-plugin这个插件,利用插件的...于是在我面前就有两条路,一条是放弃maven-shade-plugin插件,比如选择其他类似的插件,比如maven-assembly-plugin,这种方案我试过,发现maven-assembly-plugin...这个插件的扩展配置,比maven-shade-plugin复杂一些,于是放弃。...扩展的思路 我并没采用直接修改maven-shade-plugin插件的方式,而是在maven-shade-plugin打包后的基础上,再进行插件定制。...我发现不管是springboot还是dubbo本身就集成一些宝藏插件,比如这个maven-shade-plugin插件,我就是dubbo那边找到的,地址在 https://github.com/apache

1.7K70

Maven - 统一构建规范:Maven 插件管理最佳实践

如新建一个 Maven 工程并在依赖中导入 Jackson 依赖库并进行打包编译,可以看到下图编译后的 JAR 文件中只有工程中新建的 MyTest.class 文件,项目中所导入的依赖并没有被一起打包...https://maven.apache.org/plugins/maven-shade-plugin/ Shade 插件的功能更为强大,其提供了两个功能: 第一个即与 assembly 类似可实现依赖的打包编译...另一个即实现包的重命名功能,我们都知道 Maven 并不允许在一共工程中同时引入单个依赖的不同版本,而通过 Shade 插件即可实现二次包装从而绕开该限制。...Shade 插件 - 标签 下面介绍一下 Shade 插件中各标签的使用。 artifactSet 通过 includes 标签可以指定需要一同打包编译的第三方依赖。...,可以看到编译后的 Jackson 模块包层级已经变成我们自定义的内容,而 Java 的类加载即通过类的完成限定名(包名+类名)来区分是否为同一个类,因此通过 Shade 插件即可实现 Maven 的单一工程多版本引入

1.2K30

版本不兼容Jar包冲突该如何是好?

于是,我们就去搜索相关的文章,果不其然,maven-shade-plugin正是那优雅的挠痒姿势,这个Maven插件的原理正是将类的包路径进行重新映射,达到隔离不兼容Jar包的目的。...三、maven-shade-plugin解决依赖冲突 最后如何来配置和使用maven-shade-plugin将Guava映射成我们自己定制的Jar包,实现与中间件Guava的隔离。...整个的过程还是比较清晰明了的,主要是创建一个Maven工程,引入依赖,配置我们要发布的仓库地址,引入编译打包插件maven-shade-plugin插件,配置映射规则(标签之间部分),然后编译打包发布到...从问题出来,我们一步一步探寻问题的解决方案,最终的maven-shade-plugin插件方案虽然看似与手动自行维护代码本质一致,看似回到了原点,但其实最终的方案优雅性远比最开始高得多,正如人生的道路那样...如果遇到类似需要支持版本不兼容Jar包共存的场景,可以考虑使用maven-shade-plugin插件,这种方法比较轻量级,可用于项目中存在个别不兼容Jar包冲突的场景,简单有效,成本也很低。

2.2K30

如何利用Maven将代码打包成第三方公共jar包?

二、方法实践 2.1、assembly插件 2.1.1、pom.xml的相关配置文件如下 <project xmlns="http://<em>maven</em>.apache.org/POM/4.0.0" xmlns...2.2、shade插件 2.2.1、pom.xml的相关配置文件如下 <project xmlns="http://<em>maven</em>.apache.org/POM/4.0.0" xmlns:xsi="...-- <em>maven</em>-<em>shade</em>-plugin,不同的是<em>shade</em>可以将多个相同的配置文件追加合并 --> org.apache.<em>maven</em>.plugins...2.2.3、验证jar是否可执行 在XXX.jar文件下,打开终端,输入如下命令 #验证jar是否可执行,如果<em>没有</em>报错,说明<em>没有</em>问题 java -jar XXX.jar 不同点:<em>shade</em>可以将多个相同的配置文件追加合并...2.3、Fatjar打包工具(eclipse<em>插件</em>) 2.3.1、eclipse在线安装<em>插件</em> 1、打开eclipse,打开菜单help > Install New Sofware > Add... name

1.6K20

Maven - 打包之争:Jar vs. Shade vs. Assembly

Shade 打包方式: 描述: Maven Shade插件允许创建一个可执行的JAR文件,其中包含所有依赖。 优点: 生成一个独立的可执行JAR,无需用户手动添加依赖。...Jar 打包方式_maven-jar-plugin Overview 使用maven-jar-plugin插件, 默认的打包方式,用来打普通的project JAR包 ....Shade 打包方式_maven-shade-plugin Overview 插件:使用maven-shade-plugin插件 maven-shade-plugin提供了两大基本功能: 将依赖的jar.../plugins/maven-shade-plugin/examples/attached-artifact.html 官方文档 https://maven.apache.org/plugins/maven-shade-plugin...日常使用比较多的是maven-assembly-plugin插件 例如:大数据项目中往往有很多shell脚本、SQL脚本、.properties及.xml配置项等,采用assembly插件可以让输出的结构清晰而标准化

76810

Java、Groovy项目升级JDK 21 ASM9报错

我是用的Maven-helper插件,通过搜索asm相关依赖,然后再使用 excludes 语法排除旧版本的依赖。如果这个办法奏效,那么太恭喜了。...-- 使用一个支持的 ASM 版本 --> 根据我自己的经验,不是必须的,我猜是一些依赖的库已经包含了相关的依赖,所以不用我再重新添加依赖配置。...然后再使用Maven-helper查看ASM依赖包的时候就发现已经没有问题了。 检查Groovy及插件 当我感觉要成功的时候,发现还是不行。当我仔细检查了所有配置发现还是不行。...只能继续去互联网求助了,当我把搜索关键字加上 Groovy 之后有了收获,原来是我Groovy SDK版本以及Maven-Groovy的编译插件版本过时导致。... maven-shade-plugin 3.2.4

58910
领券