2012-11-19 1 views
2

내가 groovyConsole에를 사용하여이 단순히 그루비 스크립트를 실행 해요 (버전 1.8.1) :Groovy의 Ivy 캐시 (@Grab)가 캐싱되지 않습니까?

println "Start " + new Date() 
@Grab('log4j:log4j:1.2.16') 
import org.apache.log4j.Logger 
println "End " + new Date() 

일반적으로, 그것은 매우 빠르게 실행 (0 ~ 초)입니다.

그러나 때때로 (~ 5 회 실행마다) 실행을 완료하기 전에 3-5 초 동안 일시 중지됩니다. 내가

와이어 샤크 (here is the capture)과 스니핑 및 repository.codehaus.org에 HTTP 요청을 참조 (나는 Wireshark를 스트림의 일부 (404) 응답을 볼 수 있지만, 스크립트가 실행 관리, 그래서 분명히 항아리가 어떤 점에서 찾을 수 있습니다)하고있어 내 질문은 - 일단 스크립트가 실행되면 @ Grab을 통해 다운로드 한 항아리는 영원히 캐시되지 않습니까? 실제 Ivy/Maven 저장소가 자주 쿼리되는 이유는 무엇입니까?

+0

스크립트에서 모두'@ Grab'입니까? Ivy ('@Grab'의 기초가되는)는 무관 한 패키지를 찾고있는 것처럼 보입니다. 나는 아이비 전문가는 아니지만 : -/ –

+0

@tim_yates - 예, 그것이 전체 스크립트입니다. – ripper234

답변

3

파일은 ~/.groovy/grapes에 캐시되어야합니다. -Divy.message.logger.level=4으로 스크립트를 재실행하면 도움이 될 수있는 디버그 정보를 아이비에서 얻을 수 있습니다.

또한 해결하는 데 오랜 시간이 걸리는 포도가 있으면 아이비에게 덜 자주 확인하도록 알릴 수 있습니다. 기본 아이비 구성을 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> 
관련 문제