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

Gradle 7.4.2强制使用内部JFrog Artifactory拉取SpringBoot依赖异常

问题原因

你当前配置存在三个遗漏点,导致Gradle绕过配置的内部仓库请求外部地址:

  • plugins {}块的插件拉取逻辑不受项目级repositories配置控制,默认会访问Gradle官方插件门户、repo.gradle.org地址拉取插件和其传递依赖
  • 没有配置全局仓库强制规则,部分插件自带的仓库声明会触发外部地址请求,当前配置没有拦截这类逻辑
  • JFrog Artifactory插件仅做了引入,没有配置解析规则,无法实现仓库请求重定向
配置步骤

1. 配置settings.gradle全局锁仓库(Gradle 7.x 最有效方案)

在项目根目录的settings.gradle中添加如下配置,全局接管所有插件、项目依赖的仓库源,禁止任何子项目、插件私自声明外部仓库:

pluginManagement {
    repositories {
        maven {
            url 'https://artifactory-local/artifactory/dss-core-maven-virtual/'
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }
    }
}

dependencyResolutionManagement {
    // 发现项目/插件私自声明仓库直接报错,禁止偷偷访问外部源
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven {
            url 'https://artifactory-local/artifactory/dss-core-maven-virtual/'
            credentials {
                username = "${artifactory_user}"
                password = "${artifactory_password}"
            }
        }
    }
}

2. 精简修改build.gradle配置

删掉原来冗余的buildscript、项目级repositories块(这些配置已经被settings.gradle全局接管,留着反而会触发规则报错),调整插件声明方式,补全Artifactory插件配置:

plugins {
    id 'org.springframework.boot' version '2.7.1'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'maven-publish'
    id 'war'
    id 'idea'
    // 直接在plugins块声明Artifactory插件版本,不再通过buildscript拉取
    id 'com.jfrog.artifactory' version '4.27.1'
}

// 原有依赖配置保持不变即可
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'com.h2database:h2:2.1.212'
    testImplementation 'org.apache.httpcomponents:httpclient'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.junit.jupiter:junit-jupiter-api'
    testImplementation 'org.junit.jupiter:junit-jupiter-engine'
}

// 配置Artifactory插件解析规则,避免插件默认请求官方地址
artifactory {
    contextUrl = 'https://artifactory-local/artifactory'
    resolve {
        repository {
            repoKey = 'dss-core-maven-virtual'
            username = "${artifactory_user}"
            password = "${artifactory_password}"
            maven = true
        }
    }
}

3. 前置校验内部仓库配置

确保内部Artifactory的dss-core-maven-virtual虚拟仓库已经聚合了所有必需的上游源:

  • Gradle插件门户
  • Maven Central
  • Spring Release官方仓库
    如果虚拟仓库没代理对应上游,就算锁死仓库地址,也会因为找不到依赖构建失败。

4. 验证配置

执行构建时添加info日志参数,确认所有依赖都从内部地址拉取:
./gradlew clean build --info
如果日志中不再出现repo.gradle.org相关请求,说明配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:39:21