Gradle无法在根项目中找到方法,但我正在使用子项目

时间:2016-02-28 10:22:17

标签: gradle multi-module

我有这个简单的build.gradle

subprojects {
    test {}
}

project(':module1') {
    apply plugin: 'java'
}

并且Gradle抱怨它无法在根项目中找到方法test()。但为什么它试图在根项目中找到它?我读了here子项目不包含根项目。如果我将println name放到子项目中,我也不会在输出中看到根项目。

2 个答案:

答案 0 :(得分:1)

  1. 您只是为一个子项目应用java插件,因此其他子项目没有可用的测试闭包。

  2. 您可以尝试在给定的子项目中明确应用插件,如下所示:

    project(':module1'){project - >     project.apply插件:'java' }

答案 1 :(得分:1)

@highstakes是对的。但假设您只有一个子项目( module1 ),那只是一个时间问题。首先需要应用java插件才能配置此插件的任务。带你构建文件并改变你得到的顺序:

project(':module1') {
    apply plugin: 'java'
}

subprojects {
   test {}
}

只要您只有一个子项目,这将有效。

你得到的错误信息是gradle将 test {} 解释为传递空闭包的函数调用,并在根项目中寻找这个测试函数的定义。由于该地方没有添加(通过java插件)功能,因此会收到此错误消息。