升级Kotlin至1.5.30后Maven Shade插件打包报错求助
解决Kotlin 1.5.30与Maven Shade插件冲突问题
- 核心原因:Kotlin 1.5+版本生成的字节码引入了新的类结构(如带
___后缀的合成类),旧版本Maven Shade插件依赖的ASM库版本过低,无法解析这些新字节码。
解决方案1:升级Maven Shade插件版本
将插件版本升级到3.5.1及以上,新版本已内置适配Kotlin 1.5+的ASM库:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <!-- 替换为3.5.1或更高稳定版 --> <version>3.5.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <!-- 保留你的其他shade配置 --> </execution> </executions> </plugin>
解决方案2:强制升级ASM依赖(若升级插件仍无效)
如果升级插件后问题依旧,手动指定更高版本的ASM依赖,覆盖插件默认的旧版本:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.5.1</version> <dependencies> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> <version>9.4</version> </dependency> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm-commons</artifactId> <version>9.4</version> </dependency> <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm-tree</artifactId> <version>9.4</version> </dependency> </dependencies> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> </execution> </executions> </plugin>
解决方案3:排除有问题的Kotlin合成类
若不需要将Kotlin标准库打入shaded包,或仅需排除特定问题类,调整过滤器配置:
方式A:排除单个问题类
<filters> <filter> <artifact>org.jetbrains.kotlin:kotlin-stdlib</artifact> <excludes> <exclude>kotlin/collections/ArraysKt___*.class</exclude> </excludes> </filter> </filters>
方式B:完全排除Kotlin标准库(若运行环境已依赖)
<filters> <filter> <artifact>org.jetbrains.kotlin:kotlin-stdlib</artifact> <excludes> <exclude>**/*</exclude> </excludes> </filter> </filters>
内容的提问来源于stack exchange,提问作者Aayush Agrawal
相关产品推荐
相关产品推荐

