1

Я хочу написать простой скрипт Groovy, который использует Apache HttpClient 4.1, и так как у меня нет его банку, я хочу захватить его с помощью Grapes. Все, что я до сих пор в моем сценарий ..Почему виноград захватывает банку, о которой я не просил?

@Grab(group='org.apache.httpcomponents', module='httpclient', version='4.0') 
import org.apache.http.impl.client.DefaultHttpClient; 

Но когда я запускаю это я получаю исключение ..

java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar] 

Почему виноград получает Commons Logging, когда я просил только HTTP-клиент? Если это потому, что последний нуждается в первом, то мне нужно явно захватить все зависимые банки http-клиента самостоятельно? Как бы я даже знал, что это такое? Есть ли способ сказать Винограду сделать это самостоятельно?

ответ

5

Это происходит потому, что commons-logging является транзитивной зависимостью, то есть зависимостью org.apache.httpcomponents: httpclient.

Возможно, у вас проблема, потому что ваш локальный репозиторий maven не имеет права вести учет и не знает, как (или не настроен) искать его.

+0

Спасибо, Майк, так как я могу рассказать Винограду, чтобы он смотрел за пределы моего местного maven repo для банок, которых он не нашел? – AbuMariam

+0

@AbuMariam: используйте GrapeResolver: http://docs.groovy-lang.org/latest/html/documentation/grape.html – Jayan