Gradle错误:找不到参数的方法add()

时间:2017-09-27 16:01:15

标签: java gradle build-process

我正在使用gradle 2.12 ,我有一个以下列方式构建的多模块 java gradle项目 -

parentProject  
|__module1  
   |__src  
   |__build.gradle  
|__module2  
   |_src  
   |__build.gradle  
|__build.gradle

settings.gradle定义为 -

include "module1"
project(":module1").projectDir = file("path/to/module1")

include "module2"
project(":module2").projectDir = file("path/to/module2")

module2依赖于module1,并且在buildscript中需要依赖项。我按照this示例显示了一种解决方法,因为gradle不允许在buildscript中项目的类路径依赖性。我在module2的build.gradle中所做的是 -

buildscript {
    repositories {
        mavenLocal()
    }

    project.getTasks().add([name: "module1", type: GradleBuild]) {
        buildFile = '../module1/build.gradle'
        tasks = ['pluginJar']
    }.execute()
}

apply plugin: java

dependencies {
    // project specific dependencies
}

我开始收到以下错误 -

Error:(13, 0) Could not find method add() for arguments [{name=module1, type=class org.gradle.api.tasks.GradleBuild}, build_c3cjs9wfepa1xdklituv2tk9i$_run_closure1$_closure3@51bcefbf] on task set.

我搜索了类似的错误并找到了this解决方案,但它对我没有帮助。

这就是我的项目结构,我不能改变它以使module1成为一个独立的构建。

请指教。感谢您的帮助!

由于

2 个答案:

答案 0 :(得分:0)

您尝试调用的方法将在TaskContainer中定义。你可以看到它不是。

尝试:

project.getTasks().create(name: "module1", type: GradleBuild) {
    buildFile = '../module1/build.gradle'
    tasks = ['pluginJar']
}

正如您所看到的,我省略了对execute的调用 - 您永远不应该直接调用任务。

答案 1 :(得分:0)

正如Opal所说,这是不可能的。