154

マルチプロジェクトのgradleビルドで、「allprojects」セクションと「subprojects」セクションの違いを正確に教えてもらえますか? 親ディレクトリだけ?両方使ってる人いる?もしそうなら、それぞれに通常何を入れるかを決定する一般的なルールはありますか?

関連する質問: 2 つの構文の違いは何ですか (実際にはすべてのプロジェクトとサブプロジェクトの場合):

subprojects {  ...
}

configure(subprojects) { ...
}

いつ他の人よりも優先しますか?

4

2 に答える 2

146

マルチプロジェクト gradle ビルドでは、rootProject とサブプロジェクトがあります。両方の組み合わせがすべてのプロジェクトです。rootProject は、ビルドが開始される場所です。一般的なパターンは、rootProject にコードがなく、サブプロジェクトが Java プロジェクトであるというものです。その場合、サブプロジェクトのみに Java プラグインを適用します。

subprojects {
    apply plugin: 'java'
} 

これは、サブモジュールをビルドするだけの maven 集約 pom プロジェクトと同等です。

2 つの構文に関しては、まったく同じことを行います。最初のものは見た目が良くなります。

于 2012-08-22T16:14:39.210 に答える
53

Ryan の回答に加えてconfigure、オブジェクトのカスタム サブセットを構成する場合、この方法が重要になります。たとえば、configure([project(":foo"), project(":bar")]) { ... }またはconfigure(tasks.matching { it.name.contains("foo") }) { ... }.

いつ使用するかallprojectsvs.subprojects状況によって異なります。多くの場合、両方を使用します。たとえばsubprojects、多くのビルドではルート プロジェクトにコードが含まれていないため、Java プラグインのようなコード関連のプラグインは通常 に適用されます。一方、Eclipse および IDEA プラグインは通常、allprojects. 疑問がある場合は、例や他のビルドを調べたり、実験したりしてください。一般的な目標は、無関係な構成を避けることです。その意味では、期待される結果が得られる限りsubprojectsは優れています。allprojects

于 2012-08-22T16:32:51.810 に答える