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

Gradle拉取ManifestClasspath未使用指定Maven仓库报错如何解决?

问题原因

你遇到的501报错是因为Maven中央仓库早已停止支持HTTP协议访问,同时Gradle查找buildscript类依赖时,会按照repositories列表的声明顺序依次检索,你把HTTP协议的Maven中央仓库地址放在了Gradle官方插件仓库的前面,所以检索ManifestClasspath插件时会优先访问这个已失效的HTTP地址,还没轮到后面的插件仓库就触发了报错。

解决方案

方案一:简化仓库配置(推荐)

你单独声明的http://repo.maven.apache.org/maven2仓库完全可以直接删除,mavenCentral()的默认地址就是这个仓库的HTTPS版本,同时把Gradle插件仓库移到列表靠前位置,优先检索插件类依赖,修改后的配置如下:

buildscript {
    repositories {
        mavenLocal()
        // 插件仓库移到最前,优先拉取插件依赖
        maven {
            url "https://plugins.gradle.org/m2/"
        }
        mavenCentral()
        jcenter()
    }

    dependencies {
        // 原有依赖配置保持不变
        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")
        classpath "org.owasp:dependency-check-gradle:$dependencyCheckVersion"
        classpath("org.springframework.cloud:spring-cloud-contract-gradle-plugin:${springCloudContractVersion}")
        classpath("org.springframework.cloud:spring-cloud-contract-pact:${springCloudContractVersion}")
        classpath "gradle.plugin.ua.eshepelyuk:ManifestClasspath:1.0.0"
    }
}

方案二:显式指定依赖的拉取仓库

如果因为项目特殊要求不能调整仓库顺序,可以用Gradle的仓库内容过滤功能,指定ManifestClasspath插件仅从官方插件仓库拉取,不会去其他仓库检索:

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
        maven {
            url "https://repo.maven.apache.org/maven2"
        }
        maven {
            url "https://plugins.gradle.org/m2/"
            // 仅从当前仓库拉取该分组下的依赖
            content {
                includeGroup "gradle.plugin.ua.eshepelyuk"
            }
        }
    }
    // dependencies配置保持不变
}

如果你的Gradle版本支持plugins块声明,也可以直接用插件ID声明,不需要手动添加classpath依赖:

plugins {
    id "ua.eshepelyuk.ManifestClasspath" version "1.0.0" apply false
}
// 子项目应用插件的逻辑保持不变即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:36:03