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

Gradle多模块项目中切换项目依赖与构件依赖的优化方案

解决Gradle多模块依赖开发/生产一键切换的方案

方案一:通过Gradle属性控制依赖切换

这是最简洁的实现方式,无需复杂配置,仅通过一个属性即可在两种依赖模式间切换。

步骤1:配置默认属性

在项目根目录的gradle.properties文件中添加默认配置:

# 默认开启项目依赖(开发模式)
useProjectDependencies=true

# 集中管理生产构件版本(可选,方便后续维护)
serverVersion=0.1.3
projectModelsVersion=0.0.16
baseModelsVersion=0.0.22

步骤2:编写依赖逻辑

在需要切换依赖的模块的build.gradle.kts中,替换原有的依赖配置为以下代码:

// 映射模块路径与生产构件坐标
val moduleDependencyMap = mapOf(
    ":server" to "cz.simplecoin.server:${project.property("serverVersion")}",
    ":project-models" to "cz.simplecoin:project-models:${project.property("projectModelsVersion")}",
    ":base-models" to "cz.simplecoin:base-models:${project.property("baseModelsVersion")}"
)

// 根据属性自动选择依赖方式
moduleDependencyMap.forEach { (modulePath, artifactCoords) ->
    if (project.findProperty("useProjectDependencies") == "true") {
        implementation(project(modulePath))
    } else {
        implementation(artifactCoords)
    }
}

切换方式

  • 开发阶段:默认使用项目依赖,IDEA会自动关联源码并按需编译,无需额外操作。
  • 生产构建:执行构建命令时添加参数切换为构件依赖:
./gradlew build -PuseProjectDependencies=false

方案二:利用Gradle构建变体(适合复杂场景)

如果项目需要更精细化的构建区分,可以通过构建变体定义开发/生产两套依赖:

步骤1:定义构建变体

在模块的build.gradle.kts中添加变体配置:

plugins {
    `java-library`
}

// 定义开发和生产变体
val dev by sourceSets.creating
val prod by sourceSets.creating

// 配置依赖
dependencies {
    // 开发变体使用项目依赖
    dev.implementation(project(":server"))
    dev.implementation(project(":project-models"))
    dev.implementation(project(":base-models"))

    // 生产变体使用构件依赖
    prod.implementation("cz.simplecoin.server:0.1.3")
    prod.implementation("cz.simplecoin:project-models:0.0.16")
    prod.implementation("cz.simplecoin:base-models:0.0.22")

    // 主源码集默认依赖开发变体
    implementation(dev.output)
}

// 绑定构建任务到变体
tasks.register<Jar>("devJar") {
    from(dev.output)
}

tasks.register<Jar>("prodJar") {
    from(prod.output)
}

切换方式

  • 构建开发包:./gradlew devJar
  • 构建生产包:./gradlew prodJar

对于小型项目,方案一的属性控制方式足够简洁,且无需额外维护变体任务,更推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:07:33