我正在使用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成为一个独立的构建。
请指教。感谢您的帮助!
由于
答案 0 :(得分:0)
您尝试调用的方法将在TaskContainer
中定义。你可以看到它不是。
尝试:
project.getTasks().create(name: "module1", type: GradleBuild) {
buildFile = '../module1/build.gradle'
tasks = ['pluginJar']
}
正如您所看到的,我省略了对execute
的调用 - 您永远不应该直接调用任务。
答案 1 :(得分:0)
正如Opal所说,这是不可能的。