Как кешировать и использовать подключаемые модули локально?

Я пытаюсь создать приложение с ограниченным доступом в Интернет с помощью Gradle.

Я успешно смог использовать обычные банки с

repositories {
    mavenLocal()
...

и заселение ~\.m2\repository с соответствующими файлами.

Но у меня также есть такие заявления, как

plugins {
    id 'org.hidetake.ssh' version '2.4.0'
}

в моем build.gradle, При сборке я получаю следующую ошибку

Error resolving plugin [id: 'org.hidetake.ssh', version: '2.4.0']
> Could not GET 'https://plugins.gradle.org/api/gradle/2.9/plugin/use/org.hidetake.ssh/2.4.0'.
   > Connection to https://plugins.gradle.org refused

Судя по всему, Gradle пытается получить плагин из Интернета, что запрещено.

Как я могу кешировать этот плагин?

На моей другой машине, которая имеет полный доступ в Интернет, я нашел такие каталоги, как

.gradle\caches

но у него есть несколько странных хеш-подкаталогов, которые я не знаю, как использовать. Копирование modules-2 каталог с другой машины не помог.

2 ответа

Я полагаю, что это невозможно с новыми плагинами DSL, потому что в этом случае плагин определяется его глобальным уникальным идентификатором и версией, которые не хранятся в вашем кэше.

Для этого вы можете использовать какой-нибудь локальный репозиторий плагинов с необходимым дополнительным артефактом маркера плагинов, читайте об этом здесь.

Или просто не используйте плагины dsl и объявляйте свои зависимости простым старым способом с apply plugin: 'plugin_name' и сохраняя требуемые файлы jar в вашем локальном хранилище таким же образом, это делается с вашими зависимостями проекта.

Вы добавляете файл settings.gradle

pluginManagement {
    repositories {
        mavenLocal()
    }
}

и теперь он будет пытаться разрешить плагины из ~/.m2/repository/

Другие вопросы по тегам