如何用maven-shade-plugin插件解决同包同名class共存难题?

摘要:开心一刻 有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹 概述 maven-shade-plugin 官网已经介绍的很详细了,我给大家简单翻译一下 This plugin provides the c
开心一刻 有一天螃蟹出门,不小心撞倒了泥鳅 泥鳅很生气地说:你是不是瞎啊! 螃蟹说:不是啊,我是螃蟹 概述 maven-shade-plugin 官网已经介绍的很详细了,我给大家简单翻译一下 This plugin provides the capability to package the artifact in an uber-jar, including its dependencies and to shade - i.e. rename - the packages of some of the dependencies. 这段话简明扼要的概述了 maven-shade-plugin 的功能 能够将项目连同其依赖,一并打包到一个 uber-jar 中 uber-jar 就是一个超级 jar,不仅包含我们的工程代码,还包括依赖的 jar,和 spring-boot-maven-plugin 类似 能够对依赖 jar 中的包名进行重命名 这个功能就有意思了,后面我们详说 maven-shade-plugin 必须和 Maven 构建生命周期的 package 阶段绑定,那么当 Maven 执行 mvn package 时会自动触发 maven-shade-plugin;使用很简单,在 pom.xml 添加该插件依赖即可 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <!-- 和 maven package 阶段绑定 --> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <!-- 按需自定义配置 --> </configuration> </execution> </executions> </plugin> phase 和 goal 按如上固定配置,configuration 才是我们自由发挥的平台;有了基本了解后,我们再结合官方提供的 Examples 来看看 maven-shade-plugin 具体能干啥 选择打包内容 假设我们有项目 maven-shade-plugin-demo,其项目结构如下 如果不做任何剔除,可以按如下配置进行全打包 <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.26</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.6.0</version> <executions> <execution> <!-- 和 package 阶段绑定 --> <phase>pack
阅读全文