Gradle 格雷德尔不能';在根项目上找不到方法,但我';我正在使用子项目

Gradle 格雷德尔不能';在根项目上找不到方法,但我';我正在使用子项目,gradle,multi-module,Gradle,Multi Module,我有一个简单的build.gradle subprojects { test {} } project(':module1') { apply plugin: 'java' } Gradle抱怨在根项目上找不到方法test()。但是为什么它要在根项目中找到它呢?我听说子项目不包括根项目。如果我把println name放在子项目中,我在输出中也看不到根项目 您只为一个子项目应用java插件,这样其他子项目就不会有可用的测试闭包 您可以尝试在给定子项目上显式应用插件,如下所示:

我有一个简单的
build.gradle

subprojects {
    test {}
}

project(':module1') {
    apply plugin: 'java'
}
Gradle抱怨在根项目上找不到方法
test()
。但是为什么它要在根项目中找到它呢?我听说子项目不包括根项目。如果我把
println name
放在子项目中,我在输出中也看不到根项目

  • 您只为一个子项目应用java插件,这样其他子项目就不会有可用的测试闭包

  • 您可以尝试在给定子项目上显式应用插件,如下所示:

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

  • 您只为一个子项目应用java插件,这样其他子项目就不会有可用的测试闭包

  • 您可以尝试在给定子项目上显式应用插件,如下所示:

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


  • @高赌注是正确的。但假设您只有一个子项目(模块1),这只是一个时间问题。您首先需要应用java插件,然后才能配置该插件的任务。使用构建文件并更改您将获得的顺序:

    project(':module1') {
        apply plugin: 'java'
    }
    
    subprojects {
       test {}
    }
    
    只要只有一个子项目,这就行了


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

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

    project(':module1') {
        apply plugin: 'java'
    }
    
    subprojects {
       test {}
    }
    
    只要只有一个子项目,这就行了


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

    这很有帮助,谢谢!是错误消息让我困惑,我希望“在module1项目上找不到方法test()”,而不是“在根项目上”。这很有帮助,谢谢!这个错误消息让我很困惑,我希望“在module1项目上找不到方法test()”,而不是“在根项目上”。