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

Gradle7.1.1自定义插件使用0.1.+动态版本无法解析最新版本问题排查

旧版本来源分析

  • 本地Maven仓库残留:你只清理了~/.gradle缓存,未删除默认路径为~/.m2/repository的本地Maven仓库,你的配置中mavenLocal()在仓库列表优先级最高,Gradle会优先读取本地Maven中存储的旧版本插件。
  • Gradle动态版本缓存:Gradle默认会将动态版本(比如0.1.+)的解析结果缓存24小时,即使你删除了缓存目录,若缓存未完全失效或者删除不彻底,还是会沿用之前的解析结果。
  • Nexus元数据缓存未刷新:你删除了Nexus上的旧版本,但Nexus的仓库索引、元数据缓存没有同步更新,返回的可用版本列表仍然包含旧版本号,导致Gradle继续解析旧版本。

解决方案

  1. 清理本地Maven残留的旧插件
    执行命令删除本地Maven中存储的对应插件所有版本:
rm -rf ~/.m2/repository/com/mycompany/gradle/custom-plugin-test/
  1. 修改Gradle动态版本缓存策略
    在settings.gradle的pluginManagement块中添加以下配置,强制动态版本每次构建都重新解析,不缓存解析结果:
pluginManagement {
    resolutionStrategy {
        // 禁用动态版本缓存
        cacheDynamicVersionsFor 0, 'seconds'
        // 禁用快照/变更模块缓存
        cacheChangingModulesFor 0, 'seconds'
    }
    // 原有仓库、插件配置保持不变
    repositories {
        // 调整仓库顺序,把私有Nexus放在mavenLocal前面,优先拉远端最新版本
        maven {
            url = "${nexus_repo_base}/${nexus_pull_repo_m2}"
            credentials {
                username = nexus_username
                password = nexus_password
            }
        }
        mavenLocal()
        gradlePluginPortal()
    }
    plugins {
        id 'custom-plugin-test' version "${pluginVersion}"
    }
}
  1. 刷新Nexus仓库元数据
    登录Nexus后台,找到你存放插件的对应仓库,执行「修复索引」「失效缓存」操作,强制Nexus重新生成最新的版本元数据列表。

  2. 执行构建时强制刷新依赖
    运行Gradle任务时添加--refresh-dependencies参数,强制忽略所有本地缓存的依赖元数据,直接从远端仓库拉取最新版本信息:

gradle <你的任务名> --refresh-dependencies

内容的提问来源于stack exchange,提问作者Sundeep Gupta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:06:04