2011-06-13 6 views
5

Podczas uruchamiania skryptu, który używa systemu grape, aby @ Zależność od zależności w repozytorium ibiblio, kończy się niepowodzeniem, dopóki ręcznie nie zadzwonię pod numer grape resolve z wiersza poleceń. Następnie znajduje się w lokalnej pamięci podręcznej i skrypt działa poprawnie.Groovy 1.8 @Grab kończy się niepowodzeniem, chyba że ręcznie wezwę do usunięcia winogron

Czy istnieje inna adnotacja, której potrzebuję, aby uruchomić ją po raz pierwszy ze skryptu? Czuje się kludgy, aby poinformować użytkowników o pierwszym "grapefilowym rozwiązaniu", a następnie @Grab działa.

Jest to skrypt, chwytając słoik jedis dla REDiS:

#!/usr/bin/env groovy 
@Grab('redis.clients:jedis:2.0.0') 

import redis.clients.jedis.* 

Jedis redis = new Jedis("localhost") 

która nie z tym wyjątkiem, jeśli mam czyste ~/.groovy/winogrona cache:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
General error during conversion: Error grabbing Grapes -- [unresolved dependency: redis.clients#jedis;2.0.0: ibiblio: unable to get resource for redis/clients#jedis;2.0.0: res=/redis/clients/jedis/2.0.0/jedis-2.0.0.pom: java.net.MalformedURLException: no protocol: /redis/clients/jedis/2.0.0/jedis-2.0.0.pom] 

To tylko biegnie raz wykonam grape resolve ręcznie z wiersza poleceń:

grape -V resolve redis.clients jedis 2.0.0 

(część TH Wyjście to pokazuje, e pobieranie z ibiblio):

... 
ibiblio: found md file for redis.clients#jedis;2.0.0 
    => http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom (2.0.0) 
downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom ... 
    ibiblio: downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom 
    ibiblio: downloading http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom.sha1 
sha1 OK for http://repo1.maven.org/maven2/redis/clients/jedis/2.0.0/jedis-2.0.0.pom 
    [SUCCESSFUL ] redis.clients#jedis;2.0.0!jedis.pom(pom.original) (1184ms) 
... 

Po to w lokalnej pamięci podręcznej, skrypt działa prawidłowo z @Grab.

Nie dodałem ręcznie pliku ~/.groovy/grapeConfig.xml, więc używa on domyślnego pliku, który zawiera groovy. Używam groovy 1.8:

groovy -v 
Groovy Version: 1.8.0 JVM: 1.6.0_24 

Próbowałem dodanie tego ręcznie powyżej chwytaka:

@GrabResolver(name='ibiblio', m2Compatible='true', root='http://repo1.maven.org/maven2/') 

ale to nie pomogło. Czy czegoś brakuje?

+0

Otrzymałem raport od Paula Kinga na temat tej groźnej listy mailingowej, że skrypt sprawdzi się dobrze po wyjęciu go z pudełka, prowadząc go do przekonania, że ​​jest to środowisko. Miałem, że nie udało mi się to na dwóch różnych maszynach i jestem ciekawy, czy ktokolwiek inny miał podobne sytuacje (lub czy powyższy skrypt działa/kończy się niepowodzeniem po wyjęciu z pudełka dla innych). –

+0

Nie widzę tego problemu w nowszej wersji Groovy 2.x '$ groovy -v Wersja Groovy: 2.4.7 JVM: 1.8.0_20 Producent: Oracle Corporation OS: Mac OS X' – MarkHu

Odpowiedz

3

można spróbować umieścić ten plik jako ~ .groovy \ grapeConfig.xml, może masz jakiś problem z konfiguracją środowiska:

<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> 
     <ibiblio name="ibiblio" m2compatible="true"/> 
    </chain> 
    </resolvers> 
</ivysettings> 
0

znaleźć winogron, która ciągnie w download problemu i wykluczenia @GrabExclude ("logkit: logkit"),

następnie znaleźć pobrania problemu i umieścić go w swoim archiwum używając mvn zainstalować: zainstalować plik

Dodaj plik Grape, który zainstalowałeś lokalnie.

Powiązane problemy