我相信Gradle 文档的第 59.4 节可以帮助你。
使用 Gradle 1.8,我尝试“从一个构建运行另一个 Gradle 构建”,其中另一个 Gradle 构建是 buildSrc。
这不涉及代码生成,但可能足以提供帮助。
为了复制,我在 buildSrc 中有一个简单的 Java 项目,其 build.gradle 如下所示:
apply plugin: 'java'
build << {
println "TRACER: hello from buildSrc java build"
}
task compile2() << {
println "TRACER: hello from buildSrc compile2"
}
'build' 任务通过 buildSrc 机制自动调用。目标是从根目录调用“compile2”。在根目录下,build.gradle 看起来像这样:
task build1() << {
println "TRACER: top-level build1"
}
task build2(type: GradleBuild) {
buildFile = 'buildSrc/build.gradle'
tasks = ['compile2']
}
build2.dependsOn build1
在根级别,输出如下:
$ gradle build2
:buildSrc:compileJava etc etc
TRACER: hello from buildSrc java build
TRACER: top-level build1
TRACER: hello from buildSrc compile2
这表明:
- buildSrc 中的 Java 项目被编译
- 调用根“build1”(在此处编译您的主项目)
- 调用 buildSrc 'compile2'
类路径和代码生成很讨厌,但可能很简单。