Cuando ejecuto un script que usa el sistema grape para establecer una dependencia en el ibiblio repo, falla hasta que llamo manualmente al grape resolve
desde la línea de comando. Después de eso, está en la memoria caché local y la secuencia de comandos funciona bien.Groovy 1.8 @Grab falla a menos que llame manualmente a grape resolve
¿Hay alguna otra anotación que deba usar para que funcione la primera vez desde el script? Se siente incómodo decirles a los usuarios que primero deben resolver la uva y luego funciona @Grab.
Este es el guión, agarrando la jarra de jedis Redis:
#!/usr/bin/env groovy
@Grab('redis.clients:jedis:2.0.0')
import redis.clients.jedis.*
Jedis redis = new Jedis("localhost")
Qué falla con esta excepción si tengo un ~/.groovy/uva limpia caché:
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]
Sólo se ejecuta una vez ejecuto grape resolve
manualmente desde la línea de comandos:
grape -V resolve redis.clients jedis 2.0.0
(parte del XX salida E muestra se descarga desde 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)
...
Después de que se encuentra en la caché local, el script funciona bien con @Grab.
No he agregado manualmente un archivo ~/.groovy/grapeConfig.xml por lo que está usando el predeterminado que viene con groovy. Estoy usando maravilloso 1.8:
groovy -v
Groovy Version: 1.8.0 JVM: 1.6.0_24
He intentado añadir manualmente por encima de la apropiación:
@GrabResolver(name='ibiblio', m2Compatible='true', root='http://repo1.maven.org/maven2/')
pero eso no ayuda. ¿Me estoy perdiendo de algo?
Tenía un informe de Paul King en la lista de correo maravilloso que el guión funcionó bien para él desde el primer momento, lo que lo llevó a creer que es ambiental. Sin embargo, me ha fallado en 2 máquinas diferentes, y tengo curiosidad si alguien más ha tenido situaciones similares (o si la secuencia de comandos anterior funciona/falla de la caja para los demás). –
No aparece este problema en el nuevo Groovy 2.x '$ groovy -v Groovy Version: 2.4.7 JVM: 1.8.0_20 Proveedor: Oracle Corporation OS: Mac OS X' – MarkHu