2011-06-13 5 views
5

Lors de l'exécution d'un script qui utilise le système grape à @Grab une dépendance dans le repo ibiblio, il échoue jusqu'à ce que j'appelle manuellement grape resolve à partir de la ligne de commande. Après cela, c'est dans le cache local et le script fonctionne bien.Groovy 1.8 @Grab échoue à moins que j'appelle manuellement résolution de raisin

Y at-il une autre annotation que je dois utiliser pour faire fonctionner la première fois depuis le script? Il se sent kludgy de dire aux utilisateurs à la première "résolution de raisin" et puis fonctionne @Grab.

C'est le script, saisissant le pot de Jedis pour Redis:

#!/usr/bin/env groovy 
@Grab('redis.clients:jedis:2.0.0') 

import redis.clients.jedis.* 

Jedis redis = new Jedis("localhost") 

qui échoue à cette exception si j'ai propre ~/.groovy/cache de raisins:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
General error during conversion: Error grabbing Grapes -- [unresolved dependency: redis.clients#jedis;2.0.0: ibiblio: unable to get resource for redis/clients#jedis;2.0.0: res=/redis/clients/jedis/2.0.0/jedis-2.0.0.pom: java.net.MalformedURLException: no protocol: /redis/clients/jedis/2.0.0/jedis-2.0.0.pom] 

Il ne exécute une fois j'exécuter grape resolve manuellement à partir de la ligne de commande:

grape -V resolve redis.clients jedis 2.0.0 

(partie de th sortie e montre qu'il est le téléchargement à partir ibiblio):

... 
ibiblio: found md file for redis.clients#jedis;2.0.0 
    => http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom (2.0.0) 
downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom ... 
    ibiblio: downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom 
    ibiblio: downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom.sha1 
sha1 OK for http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom 
    [SUCCESSFUL ] redis.clients#jedis;2.0.0!jedis.pom(pom.original) (1184ms) 
... 

Après il est dans le cache local, le script fonctionne très bien avec @Grab.

Je n'ai pas ajouté manuellement un ~/.groovy/fichier grapeConfig.xml de sorte qu'il utilise celui par défaut qui est livré avec groovy. J'utilise Groovy 1.8:

groovy -v 
Groovy Version: 1.8.0 JVM: 1.6.0_24 

J'ai essayé d'ajouter manuellement au-dessus de la benne:

@GrabResolver(name='ibiblio', m2Compatible='true', root='http://repo1.maven.org/maven2/') 

mais cela n'a pas aidé. Est-ce que je manque quelque chose?

+0

J'ai eu un rapport de Paul King sur la liste de diffusion groovy que le script a bien fonctionné pour lui hors de la boîte, lui faisant croire qu'il est environnemental. Je l'ai eu échec pour moi sur 2 machines différentes si, et je suis curieux de savoir si quelqu'un d'autre a eu des situations similaires (ou si le script fonctionne ci-dessus/échoue de la boîte pour les autres). –

+0

Ne voyant pas ce problème dans les nouveaux 2.x Groovy '$ groovy -v Version Groovy: 2.4.7 JVM: 1.8.0_20 vendeur: Oracle Corporation OS: Mac OS X' – MarkHu

Répondre

3

Pouvez-vous essayer de mettre ce fichier comme ~ .groovy \ grapeConfig.xml, vous pouvez avoir un problème de configuration de l'environnement:

<ivysettings> 
    <settings defaultResolver="downloadGrapes"/> 
    <resolvers> 
    <chain name="downloadGrapes"> 
     <filesystem name="cachedGrapes"> 
     <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/> 
     <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/> 
     </filesystem> 
     <ibiblio name="ibiblio" m2compatible="true"/> 
    </chain> 
    </resolvers> 
</ivysettings> 
0

trouver le raisin qui tire dans le téléchargement de problème et ne comprennent pas @GrabExclude ("logkit: logkit"),

puis trouver le téléchargement de problème et la mettre dans votre archive à l'aide mvn install: install-fichier

Ajouter un Raisin le fichier que vous avez installé localement