Groovy 1.8 @Grab не работает, если я не вызову вручную разрешение винограда - PullRequest
5 голосов
/ 13 июня 2011

При запуске сценария, использующего систему grape для @ захвата зависимости в репозитории ibiblio, происходит сбой до тех пор, пока я вручную не вызову grape resolve из командной строки. После этого он находится в локальном кэше и скрипт работает нормально.

Есть ли какая-нибудь другая аннотация, которую мне нужно использовать, чтобы заставить ее работать в первый раз из скрипта? Было бы глупо говорить пользователям сначала «решимость виноградников», а затем @Grab работает.

Это скрипт, который берет jedis jar для redis:

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

import redis.clients.jedis.*

Jedis redis = new Jedis("localhost")

Что не работает с этим исключением, если у меня есть чистый кеш ~ / .groovy / grapes:

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]

Он запускается только после того, как я вручную выполню grape resolve из командной строки:

grape -V resolve redis.clients jedis 2.0.0

(часть вывода показывает, что он загружается из 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)
...

После того, как он находится в локальном кэше, скрипт отлично работает с @Grab.

Я не добавил вручную файл ~ / .groovy / grapeConfig.xml, поэтому он использует файл по умолчанию, поставляемый с groovy. Я использую Groovy 1.8:

groovy -v
Groovy Version: 1.8.0 JVM: 1.6.0_24

Я попытался добавить это вручную над захватом:

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

но это не помогло. Я что-то упустил?

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Можете ли вы попытаться поместить этот файл как ~ .groovy \ grapeConfig.xml, у вас могут возникнуть проблемы с настройкой среды:

<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 голосов
/ 17 сентября 2013

найдите Виноград, который тянет за собой проблему , загрузите и исключите @GrabExclude ("logkit: logkit"),

, затем найдите проблему , загрузите и вставьтеэто в ваш архив, используя mvn install: install-file

Добавьте Grape к файлу, который вы установили локально

...