有没有办法将Gradle插件从存储库下载到Gradle缓存并在脱机模式下使用它?

时间:2017-01-23 03:01:33

标签: gradle offline

我正在尝试创建一个可在--offline模式下运行的gradle项目的副本。我已将所有步骤自动化。我无法自动将插件jar下载到gradle缓存中。

我的离线分发工作方式是指定GRADLE_USER_HOME,下载所有依赖项并将整个gradle缓存与项目捆绑在一起。不幸的是我们正在使用一些自定义插件。我当然可以为它们中的每一个做一个例外并手动包含它们,并为离线模式提供某种if语句。但如果我只是将罐子下载到缓存中就会很棒。

有没有办法强制gradle下载所有依赖项,包括插件依赖项?

这就是我为其余依赖项做的事情:

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

它将所有依赖项下载到本地缓存。但是插件当然不包含在任何配置中。

即使插件在缓存中下载,它似乎仍然在离线模式下失败并显示以下消息:无法从https://plugins.gradle.org/api/gradle解析插件,因为Gradle正在离线模式下运行

1 个答案:

答案 0 :(得分: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'

这会将插件下载到本地gradle缓存中。