我使用groovyConsole (1.8.1版)运行这个简单的groovy脚本:
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存储库如此频繁地被查询?
发布于 2012-11-20 06:21:26
这些文件应该缓存在~/.groovy/grapes中。如果您使用-Divy.message.logger.level=4重新运行脚本,您将从ivy获得一些调试信息,这些信息可能对您有所帮助。
此外,如果你有一个葡萄需要很长时间来解决,你可以告诉常春藤少检查。将默认的常春藤配置从here复制到~/.groovy/grapeConfig.xml,并将属性ivy.cache.ttl.default添加到等待一段时间后再进行检查。例如:
<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>https://stackoverflow.com/questions/13452108
复制相似问题