2011-06-13 32 views
5

当运行一个使用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/') 

,但没有帮助。我错过了什么吗?

+0

我从Groovy邮件列表中获得了Paul King的一份报告,该脚本开箱即可为他工作,让他相信这是环境保护。尽管我在两台不同的机器上已经失败了,但我很好奇,如果其他人有类似的情况(或者上面的脚本工作/为其他人开箱失败)。 – 2011-06-13 21:55:08

+0

在较新的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

回答

3

你可以尝试把这个文件〜.groovy作为\ grapeConfig.xml,你可能有一些环境配置问题:

<ivysettings> 
    <settings defaultResolver="downloadGrapes"/> 
    <resolvers> 
    <chain name="downloadGrapes"> 
     <filesystem name="cachedGrapes"> 
     <ivy pattern="${user.home}/.groovy/grapes/[organisation]/[module]/ivy-[revision].xml"/> 
     <artifact pattern="${user.home}/.groovy/grapes/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/> 
     </filesystem> 
     <ibiblio name="ibiblio" m2compatible="true"/> 
    </chain> 
    </resolvers> 
</ivysettings> 
0

发现,在问题,请下载拉葡萄和排除 @GrabExclude( “logkit:logkit”),

然后找到问题,请下载和使用 把它放到你的存档MVN安装:安装文件

添加Grape您在本地安装的文件