Tamas Cservenak opened MNG-7471 and commented
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!
Affects: 3.9.x-candidate
Issue Links:
-
MNG-7453 Upgrade Maven Resolver to 1.8.0
("is caused by")
-
MNG-7472 Extend Maven BOM to cover all things "provided" by Maven
-
MNG-7470 Add IT involving resolver transport
Remote Links:
Backported to: 4.0.0-alpha-2, 3.9.0
Tamas Cservenak opened MNG-7471 and commented
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:
While plugin will have added its "own" versions of these below to plugin realm:
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!
Affects: 3.9.x-candidate
Issue Links:
MNG-7453 Upgrade Maven Resolver to 1.8.0
("is caused by")
MNG-7472 Extend Maven BOM to cover all things "provided" by Maven
MNG-7470 Add IT involving resolver transport
Remote Links:
Backported to: 4.0.0-alpha-2, 3.9.0