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
放入子项目,我也不会在输出中看到根项目。
您只为一个子项目应用了 java 插件,因此其他子项目将无法使用测试关闭。
您可以像这样尝试在给定的子项目上显式应用插件:
project(':module1') { 项目 ->
project.apply 插件:'java'
}
@highstakes 是对的。但是假设你只有一个子项目(module1),这只是时间问题。您首先需要应用 java 插件,然后才能配置该插件的任务。获取您的构建文件并更改您将获得的顺序:
project(':module1') {
apply plugin: 'java'
}
subprojects {
test {}
}
只要您只有一个子项目,它就可以工作。
您收到的错误消息是 gradle 将 test {} 解释为传递空闭包的函数调用,并且正在寻找此测试函数的定义在根项目中。由于该功能未在此处添加(通过 java 插件),您会收到此错误消息。
我有这个简单的build.gradle
subprojects {
test {}
}
project(':module1') {
apply plugin: 'java'
}
和 Gradle 抱怨无法在根项目上找到方法 test()
。但是为什么它会尝试在根项目中找到它呢?我读到 here 子项目不包括根项目。如果我将 println name
放入子项目,我也不会在输出中看到根项目。
您只为一个子项目应用了 java 插件,因此其他子项目将无法使用测试关闭。
您可以像这样尝试在给定的子项目上显式应用插件:
project(':module1') { 项目 -> project.apply 插件:'java' }
@highstakes 是对的。但是假设你只有一个子项目(module1),这只是时间问题。您首先需要应用 java 插件,然后才能配置该插件的任务。获取您的构建文件并更改您将获得的顺序:
project(':module1') {
apply plugin: 'java'
}
subprojects {
test {}
}
只要您只有一个子项目,它就可以工作。
您收到的错误消息是 gradle 将 test {} 解释为传递空闭包的函数调用,并且正在寻找此测试函数的定义在根项目中。由于该功能未在此处添加(通过 java 插件),您会收到此错误消息。