You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何下载指定Gradle插件并从本地加载实现离线构建?

Gradle无网络环境下本地加载插件解决方案

问题背景

当前使用Gradle 5.5,项目的build.gradle.kts配置如下:

plugins {
    id("java-library")
    id("org.xbib.gradle.plugin.jflex") version "1.2.0"
    id("cup.gradle.cup-gradle-plugin") version "1.2"
    jacoco
}

jacoco {
    toolVersion = "0.8.8"
}

repositories {
    maven {
        url = uri("https://repo1.maven.org/maven2/")
    }
    jcenter()
    maven {
        url = uri("https://plugins.gradle.org/m2/")
    }
}

联网状态下构建正常,但需要在无网络、无法复用.gradle缓存的多台电脑上构建。目前已通过files()方式成功加载本地依赖jar,但断网后构建失败,报错如下:

* What went wrong:
Plugin [id: 'com.gradle.build-scan', version: '2.3', artifact: 'com.gradle:build-scan-plugin:2.3'] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.gradle:build-scan-plugin:2.3')
  Searched in the following repositories:
    Gradle Central Plugin Repository

现需解决两个问题:org.xbib.gradle.plugin.jflex和cup.gradle.cup-gradle-plugin的下载来源,以及如何从本地文件系统加载它们。


一、两个插件的下载来源

  • org.xbib.gradle.plugin.jflex:1.2.0:发布在Gradle官方插件仓库,对应的构件坐标为org.xbib.gradle.plugin:jflex-plugin:1.2.0
  • cup.gradle.cup-gradle-plugin:1.2:同样发布在Gradle官方插件仓库,对应的构件坐标为com.github.johnrengelman:cup-gradle-plugin:1.2(插件ID与构件坐标存在映射关系,需注意对应)

二、本地加载插件的实现步骤

1. 提前下载插件jar包

联网环境下,通过以下方式获取插件jar:

  • 直接从Gradle插件仓库搜索对应坐标下载jar文件
  • 或在联网项目中执行gradle dependencies,从本地.gradle/caches目录中找到对应jar并复制

将下载好的jar包放到项目内的本地目录(比如./gradle-plugins/),确保该目录随项目代码同步到其他无网络电脑。

2. 修改build.gradle.kts配置

放弃plugins DSL的远程依赖方式,改用buildscript块加载本地插件:

// 配置构建脚本依赖,加载本地插件jar
buildscript {
    dependencies {
        classpath(files("gradle-plugins/jflex-plugin-1.2.0.jar"))
        classpath(files("gradle-plugins/cup-gradle-plugin-1.2.jar"))
    }
}

// 应用本地加载的插件
apply(plugin = "org.xbib.gradle.plugin.jflex")
apply(plugin = "cup.gradle.cup-gradle-plugin")

// 保留原有的核心插件与配置
plugins {
    id("java-library")
    jacoco
}

jacoco {
    toolVersion = "0.8.8"
}

// 无网络环境下可注释所有远程仓库配置
repositories {
    // maven { url = uri("https://repo1.maven.org/maven2/") }
    // jcenter()
    // maven { url = uri("https://plugins.gradle.org/m2/") }
}

3. 解决build-scan插件报错

报错中的com.gradle.build-scan插件通常来自Gradle全局配置文件(如~/.gradle/init.gradle或~/.gradle/init.gradle.kts),是全局启用的构建扫描插件。解决方式:

  • 直接修改全局配置文件,删除或注释掉关于build-scan插件的配置
  • 若无法修改全局配置,可在项目的settings.gradle.kts中覆盖配置,禁止自动加载:
pluginManagement {
    plugins {
        id("com.gradle.build-scan") version "2.3" apply false
    }
}

内容的提问来源于stack exchange,提问作者D.J.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:27:46