[
https://issues.apache.org/jira/browse/CAMEL-23933?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-23933.
---------------------------------
Resolution: Fixed
> camel-tooling-maven depends on deprecated maven-resolver-supplier causing
> classpath conflicts with maven-resolver-supplier-mvn3
> -------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-23933
> URL: https://issues.apache.org/jira/browse/CAMEL-23933
> Project: Camel
> Issue Type: Improvement
> Components: camel-kamelet-main
> Affects Versions: 4.18.3, 4.21.0
> Reporter: Otavio Rodolfo Piske
> Assignee: Claus Ibsen
> Priority: Major
> Labels: help-wanted
> Fix For: 4.22.0
>
>
> camel-tooling-maven depends on
> org.apache.maven.resolver:maven-resolver-supplier:1.9.27, which is the
> pre-split artifact from the Maven Resolver 1.x era. In Maven Resolver 2.0.x,
> this artifact was split into maven-resolver-supplier-mvn3 and
> maven-resolver-supplier-mvn4.
> Both maven-resolver-supplier (1.9.x) and maven-resolver-supplier-mvn3 (2.0.x)
> provide the class org.eclipse.aether.supplier.RepositorySystemSupplier. When
> a project uses camel-tooling-maven alongside any library that depends on
> maven-resolver-supplier-mvn3 (the current recommended artifact), both jars
> end up on the classpath. Maven does not detect a conflict because they have
> different artifact IDs.
> At runtime, the classloader may pick the old RepositorySystemSupplier from
> maven-resolver-supplier:1.9.27, which references
> org.eclipse.aether.internal.impl.DefaultTrackingFileManager. This class was
> removed in maven-resolver-impl:2.0.x (which Maven resolves to as the higher
> version), resulting in NoClassDefFoundError.
> Steps to reproduce:
> 1. Create a project that depends on both camel-kamelet-main (which
> transitively brings in camel-tooling-maven) and any artifact using
> maven-resolver-supplier-mvn3:2.0.x
> 2. Call new RepositorySystemSupplier().get()
> 3. NoClassDefFoundError:
> org/eclipse/aether/internal/impl/DefaultTrackingFileManager
> Expected behavior: camel-tooling-maven should depend on
> maven-resolver-supplier-mvn3 instead of the deprecated
> maven-resolver-supplier, avoiding classpath conflicts with consumers already
> on the 2.0.x resolver.
> Workaround: Exclude maven-resolver-supplier from camel-kamelet-main:
> <dependency>
> <groupId>org.apache.camel</groupId>
> <artifactId>camel-kamelet-main</artifactId>
> <exclusions>
> <exclusion>
> <groupId>org.apache.maven.resolver</groupId>
> <artifactId>maven-resolver-supplier</artifactId>
> </exclusion>
> </exclusions>
> </dependency>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)