I do use maven-pmd-plugin:3.15.0
and the maven-checkstyle-plugin:3.1.2
.
Both do import transitively on an old version of the org.apache.httpcomponents:httpclient:4.0.2
.
How can I configure each plugin to use the newest version of the httpclient (org.apache.httpcomponents:httpclient:4.5.13
)?
Edited regarding below comment why I need to replace the dependency:
My project (springboot 2.4.x application) uses camel-http-starter
dependency which also transitively imports the 4.5.13 version and after calling mvn clean install
or verify|test|package
randomly I do get following exception
Exception in thread "ivy-httpclient-shutdown-handler" java.lang.NoClassDefFoundError: org/apache/http/impl/conn/PoolingHttpClientConnectionManager$2
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.shutdown(PoolingHttpClientConnectionManager.java:413)
at org.apache.http.impl.client.HttpClientBuilder$2.close(HttpClientBuilder.java:1244)
at org.apache.http.impl.client.InternalHttpClient.close(InternalHttpClient.java:201)
at org.apache.ivy.util.url.HttpClientHandler.close(HttpClientHandler.java:357)
at org.apache.ivy.util.url.HttpClientHandler$1.run(HttpClientHandler.java:84)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.ClassNotFoundException: org.apache.http.impl.conn.PoolingHttpClientConnectionManager$2
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 6 more
As I read in other forums here old versions of the httpclient do not contain the PoolingHttpClientConnectionManager as this has been introduced in 4.3.
The build does work fine. Its just this exception, which appears from time to time just right after the BUILD SUCCESS message.
My assumption is that maven has a flat classpath with every version of the httpclient and those time when it picks an old it cant find this class PoolingHttpClientConnectionManager$2
and the exception is thrown.