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

Gradle couldn't find method on root project, but I'm using subprojects

我有这个简单的build.gradle

subprojects {
    test {}
}

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

和 Gradle 抱怨无法在根项目上找到方法 test()。但是为什么它会尝试在根项目中找到它呢?我读到 here 子项目不包括根项目。如果我将 println name 放入子项目,我也不会在输出中看到根项目。

  1. 您只为一个子项目应用了 java 插件,因此其他子项目将无法使用测试关闭。

  2. 您可以像这样尝试在给定的子项目上显式应用插件:

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

@highstakes 是对的。但是假设你只有一个子项目(module1),这只是时间问题。您首先需要应用 java 插件,然后才能配置该插件的任务。获取您的构建文件并更改您将获得的顺序:

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

subprojects {
   test {}
}

只要您只有一个子项目,它就可以工作。

您收到的错误消息是 gradle 将 test {} 解释为传递空闭包的函数调用,并且正在寻找此测试函数的定义在根项目中。由于该功能未在此处添加(通过 java 插件),您会收到此错误消息。