[ 
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)

Reply via email to