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
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
jartool will validate that the APIs of all versioned classes are the same, and report an error like the following if they are notSince JDK 17 (JDK-8266835), the
jartool supports a--validateflag 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 runjar --validateon the outputs of maven-jar-plugin.Here are two examples where this came up with jars created by maven-jar-plugin
jar, notmaven-jar-plugin, to create MR-JAR unitsofmeasurement/indriya#348