Gradle构建因Content-Length异常失败,如何用本地Jar做插件?
用本地Jar替代Gradle远程插件的可行方法
针对你遇到的插件下载中断问题,完全可以绕过远程下载,直接用本地Jar作为插件使用,以下是几种靠谱的实现方式:
方式1:直接在buildscript里引入本地Jar
在项目根目录的build.gradle(或build.gradle.kts)里这么写:
Groovy版本
buildscript { dependencies { // 替换成你本地插件Jar的路径,相对路径(比如'../libs/xxx-plugin.jar')或绝对路径都行 classpath files('/绝对路径/到/你的/plugin.jar') } } // 替换成插件的实际ID,比如'com.example.myplugin' apply plugin: '你的插件ID'
Kotlin版本
buildscript { dependencies { classpath(files("/绝对路径/到/你的/plugin.jar")) } } apply(plugin = "你的插件ID")
方式2:搭个本地插件仓库
如果有多个本地插件Jar,或者想更规范管理,可以建个本地目录当仓库:
- 建个本地目录,比如
./local-plugins,把插件Jar放进去(要是想符合Maven结构,就按groupId/artifactId/版本号的层级放,直接丢Jar也能用) - 在
settings.gradle(或settings.gradle.kts)里添加这个本地仓库:
Groovy版本
pluginManagement { repositories { maven { url = uri('./local-plugins') } // 原来的其他仓库(比如mavenCentral)可以保留,不影响 } }
Kotlin版本
pluginManagement { repositories { maven(url = uri("./local-plugins")) // 原来的其他仓库(比如mavenCentral)可以保留,不影响 } }
- 之后在
build.gradle里正常写plugins块或apply plugin就行,Gradle会先从本地仓库找,不会去远程下载。
方式3:用includeBuild关联本地插件项目
如果插件是你本地的源码项目,或者能把Jar包装成一个本地模块:
- 在
settings.gradle里加一行:
// 替换成插件项目的本地路径 includeBuild('/路径/到/你的插件项目')
- 然后在
build.gradle里直接应用插件ID就可以了。
重要提醒
- 本地Jar必须带插件元数据:Jar包里得有
META-INF/gradle-plugins/目录,里面有个和插件ID同名的.properties文件,比如插件ID是com.example.myplugin,就需要com.example.myplugin.properties,文件里要写implementation-class=com.example.MyPluginImplementationClass,不然Gradle认不出来这是个插件。 - 尽量用相对路径,别用绝对路径,不然换机器或者团队协作的时候容易出问题。
内容的提问来源于stack exchange,提问作者PVI-AXL
相关产品推荐
相关产品推荐

