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

SpringBoot+Gradle多模块项目构建问题及依赖传递咨询

Gradle多模块项目问题解决方案(SpringBoot+约定插件+KTS)

一、自定义插件「找不到实现类SpringbootConventionPlugin」问题解决

核心配置修正

在build-logic/convention/build.gradle.kts中,必须通过gradlePlugin块明确声明插件的ID与实现类全路径,同时确保模块应用正确的Gradle插件:

plugins {
    `java-gradle-plugin` // 提供插件开发基础支持
    `kotlin-dsl` // 支持用KTS编写插件逻辑
}

gradlePlugin {
    plugins {
        create("springbootConvention") {
            id = "com.yourproject.springboot-convention" // 自定义插件ID,供业务模块引用
            implementationClass = "com.yourproject.convention.SpringbootConventionPlugin" // 插件类全限定路径
        }
    }
}

dependencies {
    implementation(libs.spring.boot.gradle.plugin)
    implementation(libs.kotlin.gradle.plugin)
}

类路径规范

将SpringbootConventionPlugin类放置在build-logic/convention/src/main/kotlin/com/yourproject/convention/目录下,保证类的包路径与implementationClass配置完全匹配。


二、依赖传递失效问题解决

1. 确保api配置生效

api依赖配置由java-library插件提供,因此需要在core:api模块中应用该插件:

// core/api/build.gradle.kts
plugins {
    id("com.yourproject.springboot-convention")
    `java-library` // 必须应用此插件才能使用api依赖配置
}

dependencies {
    api(libs.spring.boot.starter.web) // 用api声明需要向下传递的依赖
}

2. 正确声明模块依赖

在feature/article/api/build.gradle.kts中,使用api引入core:api模块,保证core:api的api依赖能传递到当前模块的上层消费者:

// feature/article/api/build.gradle.kts
plugins {
    id("com.yourproject.springboot-convention")
    `java-library`
}

dependencies {
    api(project(":core:api")) // 用api传递模块依赖,而非implementation
}

3. 检查约定插件配置

确保自定义的SpringbootConventionPlugin中没有修改依赖可见性的错误逻辑,比如不要强制将api配置替换为implementation:

// SpringbootConventionPlugin.kt
class SpringbootConventionPlugin : Plugin<Project> {
    override fun apply(target: Project) {
        with(target) {
            plugins.apply("org.springframework.boot")
            plugins.apply("io.spring.dependency-management")
            plugins.apply("org.jetbrains.kotlin.jvm")
            
            // 针对api模块自动应用java-library插件
            if (path.contains("-api")) {
                plugins.apply("java-library")
            }
            
            // 其他通用配置(如Kotlin版本、编码等)
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:08:25