как получить версию 4.0 httpclient из моего classpath в Grails - PullRequest
7 голосов
/ 02 ноября 2011

Я использую Grails 1.3.7 и не могу понять, как получить версию 4.0 httpclient из моего classpath (в пользу 4.1). Мне нужно сделать это из-за конструктора без аргументов, используемого в 4.1, на который опирается плагин.

Запустив grails 'зависимость-отчет', похоже, что 4.1 должен использоваться во время выполнения. И это так, если я собираю вещи в .war. ОДНАКО версия 4.0 все еще заканчивается на пути к классам при использовании run-app по некоторым причинам. Обратите внимание, что он (правильно) используется во время компиляции для некоторых внутренних объектов Grails, и каким-то образом он все еще попадает в мой путь к классам.

-> Могу ли я выяснить, откуда именно этот 4.0 .jar приходит и попадает в мой путь к классам, и не допустить этого (где все файлы .jar помещаются при запуске через run-app?)

-> Могу ли я сказать Grails компилировать с 4.1 вместо 4.0 для его внутренних компонентов (в данном случае модуль http-builder от org.codehaus.groovy.modules.http-builder?) Возможно, это не лучшее решение, но я ' Я возьму это, так как упаковывать все в .war каждый раз, когда я хочу протестировать, это не приятно.

Помощь будет принята с благодарностью.

Ответы [ 2 ]

7 голосов
/ 04 ноября 2011

Я только что прошел то же самое, добавьте следующее в свой BuildConfig.groovy

dependencies {        
        build 'org.apache.httpcomponents:httpcore:4.1.2' 
        build 'org.apache.httpcomponents:httpclient:4.1.2' 
        runtime 'org.apache.httpcomponents:httpcore:4.1.2'
        runtime 'org.apache.httpcomponents:httpclient:4.1.2'
} 

ура

Ли

1 голос
/ 02 ноября 2013

Вы можете получить httpclient 4.0 вне пути к классам, добавив строку исключения в BuildConfig.groovy. Выясните, какой плагин объявляет его как зависимость, с помощью команды grails dependency-report.

Как только вы найдете, какой из них включен, вы можете исключить его в разделе плагинов BuildConfig.groovy. Пример:

plugins {
    compile ':other-plugin:1.0.0' // other-plugin depends on httpclient 4.1
    compile(':aws:1.2.12.2') { // aws plugin depends on httpclient:3.1
        excludes 'httpclient'
    }
}

Плагин, который использует конструктор no-arg в httpclient 4.1, должен объявить его как зависимость. Если это не так, вы должны открыть вопрос с автором плагина. Чтобы обойти это, вы можете перечислить httpclient 4.1 в разделе зависимостей, как описано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...