1

Je veux écrire un script Groovy simple qui utilise Apache HttpClient 4.1 et comme je n'ai pas son jar, je veux l'attraper avec Grapes. Tout ce que j'ai jusqu'à présent dans mon script est ..Pourquoi les raisins attrapent-ils un pot que je n'ai pas demandé?

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

Mais quand je lance ce que je reçois une exception ..

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

Pourquoi raisins devient commons-logging quand je ne ai demandé pour le client http? Si c'est parce que ce dernier a besoin du premier, alors dois-je saisir explicitement tous les jars dépendants du client http moi-même? Comment pourrais-je même savoir ce qu'ils sont? Y a-t-il un moyen de dire à Grapes de faire cela tout seul?

Répondre

5

Cela se produit car la consignation des journaux est une dépendance transitive, c'est-à-dire une dépendance de org.apache.httpcomponents: httpclient.

Vous avez vraisemblablement un problème car votre référentiel maven local n'a pas de journalisation des communs et ne sait pas comment (ou n'est pas configuré) pour le rechercher.

+0

Merci Mike, alors comment puis-je dire à Grapes de regarder au-delà de mon repo maven local pour les pots qu'il ne trouve pas là? – AbuMariam

+0

@AbuMariam: Utiliser GrapeResolver: http://docs.groovy-lang.org/latest/html/documentation/grape.html – Jayan