Groovy - Grab - загрузка не удалась
У меня есть новая установка Groovy 2.1.4, и я хотел бы создать script, который использует построитель HTTP.
Я добавил следующую строку вверху script:
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.6')
Когда я запускаю script в GroovyConsole, я получаю следующую ошибку:
1 compilation error:
Exception thrown
VI 01, 2013 12:15:39 ODP. org.codehaus.groovy.runtime.StackTraceUtils sanitize
WARNING: Sanitizing stacktrace:
java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
... (aso) ...
java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar]
Когда я запустил следующую команду в командной строке Windows:
grape -V resolve org.codehaus.groovy.modules.http-builder http-builder 0.6
Я получаю ту же ошибку, то есть:
:: problems summary ::
:::: WARNINGS
[NOT FOUND ] commons-logging#commons-logging;1.1.1!commons-logging.jar (0ms)
==== localm2: tried
file:C:\Documents and Settings\Administrator/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
:: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
Error in resolve:
Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar]
Когда я пытаюсь самостоятельно разрешить ведение коллекций, выполните следующую команду:
grape -V resolve commons-logging commons-logging 1.1.1
Я получаю ту же ошибку, т.е. not found
.
Когда я вместо этого пытаюсь загрузить последнюю версию, то есть 1.1.3, с помощью соответствующей команды, она работает. Но даже после этого решение http-client все равно не работает.
Где проблема?
Ответы
Ответ 1
Похоже, ваши настройки Grape устанавливаются только для поиска в локальном каталоге .m2
для библиотеки. Проверьте конфигурационный файл grapeConfig.xml
. (Если у вас его нет, вы можете его создать - он должен идти в том же каталоге, где создаются каталог кеша groovysh.history
и grapes
Groovy.) Вы можете скопировать файл примера, показанный на справочная страница Groovy Grape.
Если это не поможет, я попытаюсь удалить каталог кэша grapes
и повторить попытку.
Ответ 2
Попробуйте удалить каталог ~/.m2
, а также ~/.groovy/grapes directory
.
Это сработало для меня.
Ответ 3
Моя проблема заключалась в том, что groovy (v2.4.8) просматривался в купе maven (~/.m2/repository/) и находил файл pom, но не обнаруживал связанный артефакт /JAR. Вместо того, чтобы просто перейти к следующему резольверу, который бы преуспел, он просто сдался. Обходной путь состоял в том, чтобы удалить файл pom, конкретный кеш каталога или просто временно переименовать репозиторий и снова запустить groovy, как и другие. Или вы можете попытаться вручную добавить его в репозиторий. Но они временные, и вы, скорее всего, столкнетесь с проблемой, если очистите кэш groovy или другую зависимость.
Чтобы устранить эту проблему, вы можете включить подробное ведение журнала и попытаться вручную установить зависимость. Поэтому, если ваша ошибка выглядит примерно так:
java.lang.RuntimeException: Error grabbing Grapes -- [download failed: commons-logging#commons-logging;1.1.1!commons-logging.jar, download failed: commons-codec#commons-codec;1.6!commons-codec.jar, download failed: commons-lang#commons-lang;2.4!commons-lang.jar]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
Это означает, что ваша зависимость - commons-logging-1.1.1.jar. Вы можете запустить:
grape -V install commons-logging commons-logging 1.1.1
То, что в итоге решило проблему для меня, было переопределение конфигурации по умолчанию и установка usepoms = "false" в resolver localm2. Это работает в моем случае, потому что у меня есть pom, но не JAR, поэтому, поскольку Айви не рассматривает POM сейчас, и JAR никогда не был там, чтобы начать, он переходит к следующему распознавателю, который его находит. Итак, вкратце:
- Создайте этот файл: ~/.groovy/grapeConfig.xml
- С этим содержимым:
<ivysettings>
<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}/.m2test/repository/" checkmodified="true" changingPattern=".*" changingMatcher="regexp" m2compatible="true" usepoms="false"/>
<ibiblio name="jcenter" root="https://jcenter.bintray.com/" m2compatible="true"/>
<ibiblio name="ibiblio" m2compatible="true"/>
</chain>
</resolvers>
</ivysettings>
Ответ 4
Удаление .m2
и grapes
не разрешило проблему для меня, как когда они были перезаписаны, банку не загружали. В моем случае я отсутствовал xml-apis-1.3.04.jar
В конце концов я решил проблему, вручную загрузив файл jar и скопировав его в ~/.m2/repository/xml-apis/xml-apis/<version>
Надеюсь, это полезно, если просто удалить каталоги не работает.