首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy的常春藤缓存(@Grab)不缓存?

Groovy的常春藤缓存(@Grab)不缓存?
EN

Stack Overflow用户
提问于 2012-11-19 18:40:51
回答 1查看 1.6K关注 0票数 2

我使用groovyConsole (1.8.1版)运行这个简单的groovy脚本:

代码语言:javascript
复制
println "Start " + new Date()
@Grab( 'log4j:log4j:1.2.16' )
import org.apache.log4j.Logger
println "End " + new Date()

通常,它的执行速度非常快(~ 0秒)。

然而,有时(每5次运行一次),它会在完成运行之前暂停3-5秒。我用Wireshark (here is the capture)嗅探,看到了对repository.codehaus.org的HTTP请求(我在Wireshark流中看到了大约404个响应,但脚本设法运行了,所以显然在某个时刻找到了jars )

我的问题是-一旦脚本运行一次,它通过@Grab下载的jars不是永远被缓存了吗?为什么实际的Ivy/Maven存储库如此频繁地被查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-20 06:21:26

这些文件应该缓存在~/.groovy/grapes中。如果您使用-Divy.message.logger.level=4重新运行脚本,您将从ivy获得一些调试信息,这些信息可能对您有所帮助。

此外,如果你有一个葡萄需要很长时间来解决,你可以告诉常春藤少检查。将默认的常春藤配置从here复制到~/.groovy/grapeConfig.xml,并将属性ivy.cache.ttl.default添加到等待一段时间后再进行检查。例如:

代码语言:javascript
复制
<ivysettings>
  <property name="ivy.cache.ttl.default" value="24h"/>
  <settings defaultResolver="downloadGrapes"/>
  <resolvers>
    <chain name="downloadGrapes" returnFirst="true">
      <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](-[classifier]).[ext]"/>
      </filesystem>
      <ibiblio name="localm2" root="file:${user.home}/.m2/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true"/>
      <!-- todo add 'endorsed groovy extensions' resolver here -->
      <ibiblio name="codehaus" root="http://repository.codehaus.org/" m2compatible="true"/>
      <ibiblio name="ibiblio" m2compatible="true"/>
      <ibiblio name="java.net2" root="http://download.java.net/maven/2/" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13452108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档