2010-09-03 3 views
3

Образец сценария ss.groovy:Отключить автоматическую загрузку для Groovy винограда

@Grab(group='org.codehaus.groovy.modules.http-builder', 
     module='http-builder', 
     version='0.5.0') 
import groovyx.net.http.HTTPBuilder 

println('done') 

по некоторым причинам занимает ~ 25 секунд для загрузки при запуске с

groovy ss.groovy 

и ~ 5 секунд при запуске с

groovy -Dgroovy.grape.autoDownload=false ss.groovy 

согласно this StackOverflow explanation. Я пытался делать ручной инициализации с

Grape.enableAutoDownload = false 
Grape.grab(group:'org.codehaus.groovy.modules.http-builder', 
      module:'http-builder', 
      version:'0.5.0') 
import groovyx.net.http.HTTPBuilder 
println('done') 

, но это не будет работать на импорт с:

/tmp/ss.groovy: 3: unable to resolve class groovyx.net.http.HTTPBuilder 
@ line 3, column 1. 
    import groovyx.net.http.HTTPBuilder 
^

Есть ли содержали способ либо:

  • Сделать это не автоматически загружать артефакты (предпочтительный , поскольку он позволяет решать другие проблемы, например, внешний сайт вниз, в то время как артефакт уже существует в локальном кеше)
  • Сделать стартовой фас ter любым другим способом

По содержанию я имею в виду, что все дополнительные инструкции должны быть либо внутри скрипта, либо, если таковой не существует, приемлемым значением по умолчанию (например, не проверяйте кешированные артефакты для обновлений - я все равно хотел бы иметь автоматическую загрузку по всему миру), чтобы быть помещенными в некоторые файлы groovy config (например, ~/.groovy/grapeConfig.xml или аналогичные).

ответ

2

Update: Проблема была решена, @GrabConfig(autoDownload=false) будет доступна в Groovy 2.2

+0

Прохладный, спасибо за исправление Андре! –

0

Почему бы не локально установить диспетчер хранилища?

http://nexus.sonatype.org/

Я использую Nexus для прокси-сервер и кэшировать все мои 3-й партии репозиториев. Groovy является сконфигурированной для извлечения либо из его локальный кэш или Nexus:

<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> 
     <!-- Local Nexus Repository --> 
     <ibiblio name="nexus" root="http://localhost:8081/nexus/repositories/public" m2compatible="true"/> 
    </chain> 
    </resolvers> 
</ivysettings> 
+0

Спасибо, это может работать в качестве временного решения, однако не достаточно портативный - в некоторых местах установки просто не вариант , –

Смежные вопросы