当运行一个使用grape系统的脚本来@获取ibiblio repo中的一个依赖项时,它会失败,直到我从命令行手动调用grape resolve
。之后,它在本地缓存中并且脚本运行良好。Groovy 1.8 @Grab失败,除非我手动调用葡萄决议
是否有一些其他注释需要用来让它在脚本中第一次运行?让用户先告诉“葡萄决心”然后@Grab的作品感觉很糟糕。
这是剧本,抓住了Redis的的jedis罐子:
#!/usr/bin/env groovy
@Grab('redis.clients:jedis:2.0.0')
import redis.clients.jedis.*
Jedis redis = new Jedis("localhost")
与此异常失败,如果我有一个干净的〜/ .groovy作为/葡萄缓存:
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/')
,但没有帮助。我错过了什么吗?
我从Groovy邮件列表中获得了Paul King的一份报告,该脚本开箱即可为他工作,让他相信这是环境保护。尽管我在两台不同的机器上已经失败了,但我很好奇,如果其他人有类似的情况(或者上面的脚本工作/为其他人开箱失败)。 – 2011-06-13 21:55:08
在较新的Groovy 2.x中没有看到这个问题'$ groovy -v Groovy版本:2.4.7 JVM:1.8.0_20供应商:Oracle Corporation操作系统:Mac OS X' – MarkHu 2017-01-31 21:45:49