问题现象
最近把插件app依赖的Gson组件由2.8.5版本升级到2.8.6之后,插件打包会报异常
java.util.zip.ZipException: duplicate entry: module-info.class
原因分析
在transform中打印日志,发现是jackson core 2.12.3和gson 2.8.6中都带有module-info.class,这个文件不带包路径的。
在transform阶段,调用ZipOutputStream的putNextEntry有重复的entry就会抛异常
目前我们是通过修改AbstractTransform.kt排除module-info.class解决的
private fun CtClass.debugWriteJar(outputEntryName: String?, outputStream: ZipOutputStream) {
// 忽略META-INF
if (outputEntryName?.startsWith("META-INF/") == true || outputEntryName?.equals("module-info.class") == true) {
return
}
......
}
除了jackson core和gson,其他开源组件也可能会有module-info.class,这个问题是不是统一处理下免得其他人也遇到这个问题
问题现象
最近把插件app依赖的Gson组件由2.8.5版本升级到2.8.6之后,插件打包会报异常
原因分析
在transform中打印日志,发现是jackson core 2.12.3和gson 2.8.6中都带有module-info.class,这个文件不带包路径的。
在transform阶段,调用ZipOutputStream的putNextEntry有重复的entry就会抛异常
目前我们是通过修改AbstractTransform.kt排除module-info.class解决的
除了jackson core和gson,其他开源组件也可能会有module-info.class,这个问题是不是统一处理下免得其他人也遇到这个问题