Quando si esegue uno script che utilizza il sistema grape su @Grab una dipendenza nel repository ibiblio, fallisce finché non richiamo manualmente grape resolve
dalla riga di comando. Dopodiché, si trova nella cache locale e lo script funziona correttamente.Groovy 1.8 @Grab fallisce a meno che non chiami manualmente la risoluzione dell'uva
C'è qualche altra annotazione che devo usare per farlo funzionare la prima volta dallo script? Sembra spassoso dire agli utenti di prima "risoluzione dell'uva" e poi funziona @Grab.
Questo è lo script, afferrando il vaso Jedi per Redis:
#!/usr/bin/env groovy
@Grab('redis.clients:jedis:2.0.0')
import redis.clients.jedis.*
Jedis redis = new Jedis("localhost")
che non riesce con questa eccezione se ho un pulito cache di ~/.groovy/uva:
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]
solo viene eseguito una volta eseguo grape resolve
manualmente dalla riga di comando:
grape -V resolve redis.clients jedis 2.0.0
(parte di th e output mostra è il download dal 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)
...
Dopo che è nella cache locale, lo script funziona bene con @Grab.
Non ho aggiunto manualmente un file ~/.groovy/grapeConfig.xml in modo che utilizzi quello predefinito fornito con groovy. Sto usando Groovy 1.8:
groovy -v
Groovy Version: 1.8.0 JVM: 1.6.0_24
Ho provato ad aggiungere manualmente al di sopra del grab:
@GrabResolver(name='ibiblio', m2Compatible='true', root='http://repo1.maven.org/maven2/')
ma che non ha aiutato. Mi sto perdendo qualcosa?
Ho avuto un rapporto da Paul King sulla mailing list groovy che lo script ha funzionato bene per lui fuori dagli schemi, portandolo a credere che sia ambientale. Ho avuto il fallimento per me su 2 macchine diverse, e sono curioso di sapere se qualcun altro ha avuto situazioni simili (o se lo script di cui sopra funziona/fallisce fuori dagli schemi per gli altri). –
Non si vede questo problema nella versione più recente di Groovy 2.x '$ groovy -v Versione Groovy: 2.4.7 JVM: 1.8.0_20 Fornitore: Oracle Corporation OS: Mac OS X' – MarkHu