Skip to content

maven-jar-plugin can create invalid Multi-Release jars #484

@cushon

Description

@cushon

Affected version

3.4.2

Bug description

When maven-jar-plugin is used to create a Multi-Release jar, it doesn't check that the jars are valid.

The jar tool will validate that the APIs of all versioned classes are the same, and report an error like the following if they are not

entry: META-INF/versions/.../Foo.class, contains a class with different api from earlier version
invalid multi-release jar file ... deleted

Since JDK 17 (JDK-8266835), the jar tool supports a --validate flag that can be used to validate archives created by other tools. So one option would be to re-use that, or have a recommended way to run jar --validate on the outputs of maven-jar-plugin.

Here are two examples where this came up with jars created by maven-jar-plugin

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions