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

如何在Gradle中为不同构建环境配置不同Maven仓库

问题背景

我有一个基于Spring/Gradle/Kotlin的后端应用,需要在两种网络环境下构建:

  • 可访问互联网的环境
  • 仅能访问内网私有Maven仓库的环境

当前build.gradle.kts的仓库配置片段如下:

...
    repositories {
        mavenLocal()
        mavenCentral()
        maven (url = "https://artifactory.my.private.url/artifactory/maven-group/")
    }
...

遇到的问题

  • 联网环境下构建正常,但内网环境构建失败:Gradle会优先尝试mavenLocal(可能无对应依赖)、再尝试mavenCentral,此时因内网无法访问外网导致超时失败,而Gradle只有在收到404时才会切换到下一个仓库,因此根本不会尝试私有仓库。
  • 若调整仓库顺序(把私有仓库放前面),则联网环境下构建会失败。

需求:用单份构建脚本适配两种环境,无需在CI/CD中维护两份build.gradle.kts文件。


解决方案

通过Gradle的项目属性(Project Properties)动态切换仓库配置,实现单脚本适配双环境:

修改build.gradle.kts中的仓库配置:

repositories {
    if (properties.containsKey("isProd")) {
        println("using prod maven url")
        maven (url = "https://artifactory.my.private.url/artifactory/maven-group/")
    } else {
        mavenLocal()
        mavenCentral()
    }
}

构建命令

  • 内网环境(使用私有仓库):
./gradlew clean bootjar -P isProd=true
  • 联网环境(使用公共仓库):
    直接执行默认命令即可,无需添加属性:
./gradlew clean bootjar

内容的提问来源于stack exchange,提问作者Tamás

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:22:04