3

示例脚本 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

按照这个 StackOverflow 解释。我尝试使用

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 或类似文件)。

4

3 回答 3

2

更新:问题已修复,@GrabConfig(autoDownload=false)将在 Groovy 2.2 中可用

于 2013-05-07T06:59:53.983 回答
0

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

http://nexus.sonatype.org/

我使用 Nexus 代理和缓存我所有的第 3 方存储库。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>
于 2010-09-06T20:32:14.140 回答
0

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

于 2011-07-25T02:33:47.260 回答