Skip to content

插件依赖有重复module-info.class会导致插件打包失败 #704

@weixiaokang

Description

@weixiaokang

问题现象
最近把插件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,这个问题是不是统一处理下免得其他人也遇到这个问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions