Как кешировать и использовать подключаемые модули локально?
Я пытаюсь создать приложение с ограниченным доступом в Интернет с помощью 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/