Замените зависимость org.apache.httpcomponents:httpclient в maven-pmd-plugin и maven-checkstyle-plugin.

я использую maven-pmd-plugin:3.15.0и maven-checkstyle-plugin:3.1.2.

Оба импортируют транзитивно в старой версии org.apache.httpcomponents:httpclient:4.0.2.

Как я могу настроить каждый плагин для использования новейшей версии httpclient ( org.apache.httpcomponents:httpclient:4.5.13)?

Отредактировано в отношении комментария ниже, почему мне нужно заменить зависимость: Мой проект (приложение springboot 2.4.x) использует camel-http-starterзависимость, которая также транзитивно импортирует версию 4.5.13 и после вызова mvn clean installили же verify|test|packageслучайно я получаю следующее исключение

      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

Как я читал здесь на других форумах, старые версии httpclient не содержат PoolingHttpClientConnectionManager, поскольку он был представлен в версии 4.3.

Сборка работает нормально. Это просто исключение, которое время от времени появляется сразу после сообщения BUILD SUCCESS.

Я предполагаю, что у maven есть плоский путь к классам с каждой версией httpclient, и в те времена, когда он выбирает старую версию, он не может найти этот класс PoolingHttpClientConnectionManager$2и выбрасывается исключение.

2 ответа

В общем, взгляните на страницу плагинов https://maven.apache.org/plugins/ , где перечислены самые последние версии плагинов.

Итак, для есть версия 3.16.0, до которой я рекомендую перейти.

Кроме того, для maven-pmd-pluginплагина maven-checkstyle-plugin в настоящее время нет более новой версии.

Исключитьhttp-clientзависимость отmaven-checkstyle-plugin:3.1.2

      <dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.3</version>
        <exclusions>
            <exclusion>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

Это работает для меня

Другие вопросы по тегам