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

是否有Gradle插件可检查内部模块传递依赖的版本一致性?

实现Gradle内部依赖版本一致性检查的方案

一、可用的现有Gradle插件

1. Gradle原生依赖约束(Dependency Constraints)

无需额外插件,直接在facade-app的构建脚本中通过依赖约束强制指定内部模块版本,一旦传递依赖版本不匹配,构建会直接失败:

dependencies {
    constraints {
        implementation '你的组ID:core:统一版本号'
        implementation '你的组ID:level_1-app:统一版本号'
        implementation '你的组ID:level_2-app:统一版本号'
    }
}

这种方式是Gradle原生支持的,能直接确保指定内部模块的所有传递依赖都使用设定的统一版本,版本不符时会阻断构建流程。

2. nebula.dependency-lock插件

该插件可生成依赖锁定文件,锁定所有依赖版本(可限定只锁定内部模块)。在facade-app中启用后,若内部模块的传递依赖版本发生变化或不一致,构建会报错:

plugins {
    id 'nebula.dependency-lock' version '17.3.0'
}

dependencyLock {
    includeGroups = ['你的组ID'] // 仅锁定内部模块所在的组
}

执行./gradlew generateLock生成锁定文件,后续构建时若内部依赖版本不匹配则会终止构建。

二、自定义实现(按需灵活配置)

如果需要更定制化的逻辑(比如仅警告不阻断、自定义检查范围),可以编写Gradle自定义任务:

tasks.register('checkInternalDependencyVersions') {
    doLast {
        def targetModules = ['core', 'level_1-app', 'level_2-app']
        def recordedVersions = [:]

        configurations.runtimeClasspath.resolvedConfiguration.resolvedArtifacts.each { artifact ->
            def moduleInfo = artifact.moduleVersion.id
            if (targetModules.contains(moduleInfo.name)) {
                if (recordedVersions.containsKey(moduleInfo.name)) {
                    if (recordedVersions[moduleInfo.name] != moduleInfo.version) {
                        // 选择抛出异常阻断构建,或打印警告
                        throw new GradleException("模块 ${moduleInfo.name} 版本不一致:已记录 ${recordedVersions[moduleInfo.name]},当前发现 ${moduleInfo.version}")
                        // 替换为以下代码可仅输出警告:
                        // logger.warn("模块 ${moduleInfo.name} 版本不一致:已记录 ${recordedVersions[moduleInfo.name]},当前发现 ${moduleInfo.version}")
                    }
                } else {
                    recordedVersions[moduleInfo.name] = moduleInfo.version
                }
            }
        }
    }
}

// 将检查任务绑定到构建生命周期
tasks.build.dependsOn(checkInternalDependencyVersions)

该任务会遍历facade-app的运行时依赖,检查指定内部模块的版本是否统一,按需触发错误或警告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:20:01