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

Kotlin Gradle项目添加子模块后出现'api配置未找到'错误

解决Gradle项目添加子模块后Configuration with name 'api' not found错误

问题根源

api依赖配置是由java-library插件提供的,你在根项目的subprojects代码块里,先写了依赖声明(用到了api),之后才去应用java-library插件。Gradle执行顺序是从上到下,处理依赖时还没加载出api配置,自然触发报错。另外子模块里的冗余配置也会加重冲突。

修复步骤

1. 调整根项目subprojects块的代码顺序

把插件应用代码移到依赖声明前面,确保java-library插件先加载,再使用它提供的api配置。修改后的根项目subprojects块如下:

subprojects {
    val kotlinVersion = "1.8.0"

    // 先应用所有需要的插件
    apply(plugin = "org.jetbrains.kotlin.jvm")
    apply(plugin = "java")
    apply(plugin = "java-library")
    apply(plugin = "maven-publish")
    apply(plugin = "kotlin")
    apply(plugin = "org.jmailen.kotlinter")

    // 再处理任务配置
    tasks.withType<JavaCompile>().configureEach {
        options.encoding = "UTF-8"
        options.compilerArgs.addAll(listOf("-Xlint:all", "-Xlint:-serial"))
    }

    // 最后声明依赖
    dependencies {
        api("my-dependency")
    }

    tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile::class) {
        kotlinOptions {
            jvmTarget = "17"
            javaParameters = true
        }
    }

    java {
        withSourcesJar()
    }
}

2. 清理子模块的冗余配置

子模块存在重复插件声明,且用buildscript引入Spring Boot插件的方式不够规范,建议改用Plugins DSL简化配置,同时避免重复加载插件。修改后的子模块build.gradle.kts如下:

plugins {
    id("java-library")
    kotlin("jvm") version "1.8.0"
    id("org.springframework.boot") version "3.0.2"
}

tasks.withType<BootJar> {
    archiveFileName.set("$archiveBaseName.$archiveExtension")
}
tasks.getByName("jar").enabled = true

tasks.withType<BootRun> {
    systemProperties = System.getProperties()
}

dependencies {
    // 这里添加你的子模块依赖
}

额外注意事项

  • 确保根项目和子模块的Kotlin版本一致,避免版本冲突
  • 如果子模块是Spring Boot应用,java-library插件和Spring Boot插件可以共存,你已经开启普通jar任务的配置没问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:35:21