这是文件结构:
/some/project/a.gradle
/some/project/common/subproject/b.gradle
在文件a.gradle中,我有:
apply plugin: "java"
class ClassThatExtendsDefaultTask extends DefaultTask {
...
}
在文件b.gradle中:
apply from: "$rootDir/a.gradle"
task someTask(type: ClassThatExtendsDefaultTask) {
...
}
compileTestJava.dependsOn someTask
然而,当我进行gralew测试时,我得到了:
Task with path 'ClassThatExtendsDefaultTask' not found in project ':common:subproject'.
所以我的问题是如何在另一个文件中引用java任务?我将ClassThatExtendsDefaultTask从a.gradle复制到b.gradle,它确实有效。
答案 0 :(得分:0)
看起来你应该考虑将类移到buildSrc。也就是说,将类提取到文件ClassThatExtendsDefaultTask.groovy
并将其放在文件夹' [rootDir] / buildSrc / src / main / groovy' ([rootDir]是项目的根目录)。
您还应该考虑将其放在该目录下的包中,但如果是这样,您将需要导入或完全限定类名。
有几个好处。它在所有子项目中编译和可用。你可以编写测试代码(buildSrc本身就是一个groovy项目)。