2017-01-23 30 views
1

Я пытаюсь создать копию проекта градиента, который будет работать в режиме --offline. Я автоматизировал все этапы, кроме одного. Я не могу автоматически загружать плагины в кеш градиента.Есть ли способ загрузить плагин Gradle из хранилища в кеш Gradle и использовать его в автономном режиме?

Мои автономные работы по распространению, указав GRADLE_USER_HOME, загружая все зависимости и связывая весь кедр градиента с проектом. К сожалению, мы используем несколько пользовательских плагинов. Я мог бы, конечно, сделать исключение для каждого из них и включить их вручную, с каким-то заявлением if для автономного режима. Но было бы здорово, если бы я мог просто загрузить банки в кеш.

Есть ли способ заставить градлу загружать все зависимости, в том числе зависимостей плагина?

Это то, что я делаю для остальных зависимостей:

task resolveAllDependencies { 
    doLast { 
     configurations.all { it.resolve() } 
    } 
} 

Он загружает всю зависимость в локальный кэш. Но плагины, конечно, не включены ни в одну из конфигураций.

Также кажется, что даже если плагин будет загружен в кэше, он все еще не работает в автономном режиме со следующим сообщением: Плагин не может быть решен с https://plugins.gradle.org/api/gradle, потому что Gradle работает в автономном режиме

ответ

4

Вот рабочий раствор , Это не идеально, потому что он жестко кодирует репозиторий плагина gradle и меняет сценарий. Это также гораздо более подробный, чем текущий способ использования плагинов.

Вместо следующего простого определения плагина:

plugins { 
    id 'net.researchgate.release' version '2.3.5' 
} 

Это можно определить как хранилище и зависимость вручную, а затем использовать плагин так:

buildscript { 
    repositories { 
     maven { 
      url 'https://plugins.gradle.org/m2/' 
     } 
    } 
    dependencies { 
     classpath 'net.researchgate:gradle-release:2.3.5' 
    } 
} 
apply plugin: 'net.researchgate.release' 

Это загружает плагин в локальный кеш градиента.