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

如何配置Gradle根项目,使其不再自动生成src目录?

阻止Gradle为根项目自动生成src目录

我完全懂你的困扰——当根项目只是用来聚合子模块的容器时,自动冒出来的src目录确实挺碍事的。这里有几个靠谱的解决办法:

方法1:移除根项目不必要的插件

如果你的根项目不需要编译自身代码(只是负责管理子模块),最干净的方式就是不要在根项目的build.gradle/build.gradle.kts里应用Java(或其他需要源目录的)插件。

先检查根项目的构建脚本,看看有没有类似这样的代码:

// Groovy DSL,需要移除
plugins {
    id 'java'
}

或者Kotlin DSL版本:

// Kotlin DSL,需要移除
plugins {
    java
}

删掉这些插件配置后,Gradle就不会触发默认源目录的生成逻辑了。

方法2:配置源集并禁用目录创建任务

如果根项目必须保留某些插件(比如要用到全局配置),可以通过修改sourceSets清空默认源目录,同时禁用自动创建目录的任务:

Groovy DSL(build.gradle)

sourceSets {
    main {
        java.srcDirs = []
        resources.srcDirs = []
    }
    test {
        java.srcDirs = []
        resources.srcDirs = []
    }
}

// 禁用所有自动创建源目录的任务
tasks.withType(CreateSourceDirectory) {
    enabled = false
}

Kotlin DSL(build.gradle.kts)

sourceSets {
    main {
        java.setSrcDirs(emptyList())
        resources.setSrcDirs(emptyList())
    }
    test {
        java.setSrcDirs(emptyList())
        resources.setSrcDirs(emptyList())
    }
}

// 禁用所有自动创建源目录的任务
tasks.withType<CreateSourceDirectory> {
    enabled = false
}

问题根源说明

Gradle的Java插件(以及其他语言相关插件)会默认定义main和test两个源集,并且在执行相关任务时自动创建对应的目录结构。当你添加新子模块时,根项目的插件逻辑可能被触发,导致这些目录被生成。上面的配置要么彻底移除了触发逻辑,要么明确告诉Gradle不需要这些源目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:43:53