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?
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). –
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