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

如何将项目根目录的外部Groovy类加入sourceSet并可被Java类调用

问题根因

sourceSets中groovy块的include/setIncludes规则仅作用于已经添加到该sourceSet的源目录内的文件,你之前没有将项目根目录加入Groovy源码目录集合,过滤规则无法匹配到根目录下的foo.groovy,因此配置不生效。

可行配置方案

使用如下Gradle配置(Groovy DSL)即可实现需求:

sourceSets {
    main {
        groovy {
            // 1. 先将项目根目录加入Groovy源码目录列表
            srcDir projectDir
            // 2. 仅保留根目录下的foo.groovy作为编译目标,排除根目录下其他Groovy文件避免误编译
            include "foo.groovy"
        }
    }
}

验证与使用说明

  • 执行./gradlew compileGroovy后,该枚举类的编译产物会和标准src/main/groovy下的类一样输出到build/classes/groovy/main目录,模块内的Java类可直接导入使用,和普通Groovy类无差异。
  • 模块外的Groovy脚本如需引用:如果是同项目多模块场景,给对应模块添加本模块的依赖即可;如果是独立外部脚本,将本模块编译后的jar包或者classes目录加入脚本的classpath即可正常导入。

建议优先将业务类放到标准的src/main/groovy目录下,非标准路径的配置会增加项目维护成本,仅当必须放在根目录时使用上述方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:54:01