maven shade插件来解决 fatjar中的包和执行环境里的包冲突问题

https://medium.com/@minyodev/relocating-classes-using-apache-maven-shade-plugin-6957a1a8666d

比如fatjar中,需要用一个  A版本的包foo-pkg, 在环境里需要用到B版本的包foo-pkg

光在maven冲突里排除掉是没有用

需要使用 shade插件的重定向功能

1. 首先还是要先排除包冲突

2. 然后使用shade插件的重定向功能, 将最终要用到的包的某个类package重命名一下

这样,代码里用到的都是 1里面冲突解决后的版本

参考下面的标红部分, https://medium.com/@minyodev/relocating-classes-using-apache-maven-shade-plugin-6957a1a8666d

<!-- ModuleB's pom.xml -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<shadedArtifactAttached>false</shadedArtifactAttached>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
</artifactSet>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<relocations combine.children="append">
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>
com.shaded_package.io.netty
</shadedPattern>
<includes>
<include>io.netty.**</include>
</includes>
</relocation>
</relocations>

</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值