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

Gradle标准目录结构中,独立子项目开发演示代码应放于何处?

符合Gradle规范的演示程序目录与构建方案

一、推荐的源码存放位置:自定义源集目录

Gradle支持通过**自定义源集(Source Set)**管理非主/测试类的代码,这是最符合规范的做法,完全不会干扰现有项目结构。你可以把演示程序的Java文件放在:

my-little-subproject/src/demo/java

如果有演示用的资源文件,对应放在:

my-little-subproject/src/demo/resources

这个目录和src/main、src/test平级,Gradle能通过配置识别它的作用,且不会把这部分代码打包到子项目的正式产物中。

二、配置buildMyLittleDemo任务

在my-little-subproject的build.gradle(或build.gradle.kts)中添加以下配置,就能实现指定目录的构建:

Groovy DSL 示例:

// 定义demo源集
sourceSets {
    demo {
        java {
            srcDir 'src/demo/java'
        }
        resources {
            srcDir 'src/demo/resources'
        }
    }
}

// 自定义构建任务
task buildMyLittleDemo(type: Copy) {
    // 先确保demo代码编译完成
    dependsOn sourceSets.demo.classes
    // 复制编译后的类文件和资源
    from sourceSets.demo.output.classesDirs
    from sourceSets.demo.output.resourcesDir
    // 指定输出目录
    into "${buildDir}/my-little-demo"
}

Kotlin DSL 示例:

// 定义demo源集
sourceSets {
    create("demo") {
        java.srcDir("src/demo/java")
        resources.srcDir("src/demo/resources")
    }
}

// 自定义构建任务
tasks.register<Copy>("buildMyLittleDemo") {
    dependsOn(sourceSets["demo"].classesTaskName)
    from(sourceSets["demo"].output.classesDirs)
    from(sourceSets["demo"].output.resourcesDir)
    into(layout.buildDirectory.dir("my-little-demo"))
}

执行./gradlew :my-little-subproject:buildMyLittleDemo就能完成构建,产物会输出到指定目录。

三、关于子子项目的方案

理论上可以把演示程序做成my-little-subproject的子项目,但完全没必要——你的演示程序只是小型开发工具,拆成子子项目会额外增加项目结构复杂度,还要配置父子项目的依赖、构建生命周期等。只有当演示程序体量较大、需要独立的依赖管理或构建流程时,这种方案才有意义。

补充:为什么你之前的思路不合适

  • buildSrc是用来编写Gradle插件、共享构建逻辑的,不是存放业务/演示代码的目录,Gradle不会把这里的代码当作普通Java项目编译;
  • src/main/java是子项目的核心业务代码,会被打包到正式JAR/AAR中,不符合“仅开发用”的需求;
  • src/test/java是测试代码,会和测试任务绑定,且默认不会单独输出到指定目录,也不适合存放演示程序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:20:05