禁用Groovy葡萄的自动下载

时间:2010-09-03 02:17:12

标签: groovy grape

示例脚本ss.groovy:

@Grab(group='org.codehaus.groovy.modules.http-builder', 
      module='http-builder', 
      version='0.5.0')
import groovyx.net.http.HTTPBuilder

println('done')

出于某种原因,在使用

运行时需要大约25秒才能加载
groovy ss.groovy
使用

运行时

和~5秒

groovy -Dgroovy.grape.autoDownload=false ss.groovy

根据this StackOverflow explanation。我尝试用

进行手动初始化
Grape.enableAutoDownload = false
Grape.grab(group:'org.codehaus.groovy.modules.http-builder', 
           module:'http-builder',
           version:'0.5.0')
import groovyx.net.http.HTTPBuilder
println('done')

但导入时失败:

/tmp/ss.groovy: 3: unable to resolve class groovyx.net.http.HTTPBuilder
 @ line 3, column 1.
  import groovyx.net.http.HTTPBuilder
  ^

是否包含以下任何一种方式:

  • 不要自动下载工件(首选,因为它允许解决其他问题,例如在本地缓存中已存在工件时外部网站关闭)
  • 以任何其他方式让它更快地启动

通过包含我的意思是所有附加指令应该在脚本内,或者如果不存在这样的指令,则是可接受的默认值(例如,不要检查缓存的工件以获取更新 - 但是,我仍然希望自动下载全局)放入一些groovy配置文件(例如〜/ .groovy / grapeConfig.xml或类似文件)。

3 个答案:

答案 0 :(得分:2)

更新:此问题已修复,Groovy 2.2中将提供@GrabConfig(autoDownload=false)

答案 1 :(得分:0)

为什么不在本地安装存储库管理器?

http://nexus.sonatype.org/

我使用Nexus代理并缓存我的所有第三方存储库。 Groovy被配置为从其本地缓存或Nexus中检索:

<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>
      <!-- Local Nexus Repository -->
      <ibiblio name="nexus" root="http://localhost:8081/nexus/repositories/public" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

答案 2 :(得分:0)

当前(Groovy 1.8.1)实现似乎不可能。我创建了一张改进票:http://jira.codehaus.org/browse/GROOVY-4943