Gradle docのセクション 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"
}
「ビルド」タスクは、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' が呼び出されます
クラスパスとコード生成は厄介ですが、単純かもしれません。