При запуске сценария, использующего систему grape для @ захвата зависимости в репозитории ibiblio, происходит сбой до тех пор, пока я вручную не вызову grape resolve
из командной строки. После этого он находится в локальном кэше и скрипт работает нормально.
Есть ли какая-нибудь другая аннотация, которую мне нужно использовать, чтобы заставить ее работать в первый раз из скрипта? Было бы глупо говорить пользователям сначала «решимость виноградников», а затем @Grab работает.
Это скрипт, который берет jedis jar для redis:
#!/usr/bin/env groovy
@Grab('redis.clients:jedis:2.0.0')
import redis.clients.jedis.*
Jedis redis = new Jedis("localhost")
Что не работает с этим исключением, если у меня есть чистый кеш ~ / .groovy / grapes:
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]
Он запускается только после того, как я вручную выполню grape resolve
из командной строки:
grape -V resolve redis.clients jedis 2.0.0
(часть вывода показывает, что он загружается из 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)
...
После того, как он находится в локальном кэше, скрипт отлично работает с @Grab.
Я не добавил вручную файл ~ / .groovy / grapeConfig.xml, поэтому он использует файл по умолчанию, поставляемый с groovy. Я использую Groovy 1.8:
groovy -v
Groovy Version: 1.8.0 JVM: 1.6.0_24
Я попытался добавить это вручную над захватом:
@GrabResolver(name='ibiblio', m2Compatible='true', root='http://repo1.maven.org/maven2/')
но это не помогло. Я что-то упустил?