当运行一个使用葡萄系统的脚本来@Grab ibiblio repo 中的依赖项时,它会失败,直到我grape resolve
从命令行手动调用。之后,它在本地缓存中并且脚本运行良好。
我需要使用其他一些注释来让它第一次从脚本中工作吗?告诉用户首先“葡萄解决”然后@Grab起作用感觉很笨拙。
这是脚本,为 redis 抓取 jedis jar:
#!/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/')
但这没有帮助。我错过了什么吗?