【问题标题】:Groovy 1.8 @Grab fails unless I manually call grape resolveGroovy 1.8 @Grab 失败,除非我手动调用葡萄解析
【发布时间】:2011-09-14 04:17:26
【问题描述】:

当运行使用grape 系统的脚本来@Grab ibiblio 存储库中的依赖项时,它会失败,直到我从命令行手动调用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/')

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

【问题讨论】:

  • 我在 groovy 邮件列表上收到了 Paul King 的一份报告,说该脚本开箱即用,对他来说效果很好,这让他相信这是环保的。不过,我在两台不同的机器上都失败了,我很好奇是否有其他人遇到过类似的情况(或者上面的脚本是否对其他人有效/开箱即用)。
  • 在较新的 Groovy 2.x 中没有看到这个问题 $ groovy -v Groovy Version: 2.4.7 JVM: 1.8.0_20 Vendor: Oracle Corporation OS: Mac OS X

标签: groovy maven ivy grape


【解决方案1】:

你能不能试着把这个文件作为~.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>

【讨论】:

    【解决方案2】:

    找到导致问题下载的葡萄并排除 @GrabExclude("logkit:logkit"),

    然后找到问题下载并使用 mvn install:install-file

    添加一个你本地安装的Grape文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2014-12-06
      • 2020-11-24
      相关资源
      最近更新 更多