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
相关产品推荐
相关产品推荐

