Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.9.x-candidate
-
None
Description
With Maven 3.9.0-SNAPSHOT (post MNG-7453 done) there is a binary breakage introduced for plugins using Resolver, as proven by new IT MNG-7470.
Problem is following:
Maven Core exports following packages:
- resolver-api
- resolver-spi
- resolver-impl
While plugin will have added its "own" versions of these below to plugin realm:
- resolver-util
- resolver-connector-basic
This means, that a plugin will be forced to use api/spi/imp from core (1.8.0), but they will keep using their own util and connector-basic.
Resolver 1.8.0 introduces API changes that affects all of impl, connector-basic and spi, basically their own copy of connector-basic will fail. The interface change from resolver-spi will prevent class from resolver-connector-basic to be instantiated.
Error that is thrown during execution of plugin using Resolver:
Caused by: org.apache.maven.plugin.PluginContainerException: An API incompatibility was encountered while executing io.quarkus:quarkus-maven-plugin:2.3.1.Final:build: java.lang.NoSuchMethodError: 'java.util.List org.eclipse.aether.spi.connector.layout.RepositoryLayout.getChecksums(org.eclipse.aether.artifact.Artifact, boolean, java.net.URI)'
Important note: the error is triggered only when remote download happens, so even IT will pass OK with 3.9.0-SNAPSHOT IF local repository is pre-populated, hence, no remote download happens!