自定义Gradle任务无法在build.gradle中解析类,请求技术支持
解决自定义Gradle任务类无法被build.gradle解析的问题
问题原因
Gradle构建脚本(build.gradle)的执行处于配置阶段,此时项目src/main/groovy下的源码还未被编译,而构建脚本的类路径默认不包含这些未编译的源码,因此无法找到GenerateSthTask类。
解决方案
方法一:使用buildSrc目录(推荐)
buildSrc是Gradle的特殊目录,其中的代码会被自动编译并加入构建脚本的类路径,无需额外配置:
- 在项目根目录创建
buildSrc文件夹 - 构建路径
buildSrc/src/main/groovy/org/gradle,将GenerateSthTask.groovy移动到该路径下 - 保留原
build.gradle代码不变,直接执行任务即可
方法二:将任务类嵌入build.gradle
如果任务逻辑简单,可直接把类定义写在构建脚本中:
plugins { id 'groovy' } dependencies { implementation gradleApi() } class GenerateSthTask extends DefaultTask { @TaskAction void generate() {} } tasks.register("generate", GenerateSthTask)
方法三:手动配置构建脚本类路径(不推荐)
若必须保留src/main/groovy下的类,需先编译该源码并将编译产物加入构建脚本类路径,但此方法需要多项目或自定义构建逻辑,步骤繁琐,不建议使用。
内容的提问来源于stack exchange,提问作者gradleQuest
相关产品推荐
相关产品推荐

