2016-04-25 8 views
0

私はこのような非常に基本的なマルチプロジェクトのGradleのセットアップを持っている:Gradleのマルチプロジェクトルートレベルのビルドタスク

root 
+--- build.gradle 
+--- settings.gradle 
+--- subproject1 
    \--- build.gradle 
\--- subproject2 
    \--- build.gradle 

settings.gradleファイルは、両方のサブプロジェクトが含まれています。ルートプロジェクトはjavaプラグインを適用しませんが、両方のサブプロジェクトが適用されます。 gradle buildを使用すると、すべてが期待どおりに構築されます。

しかし、私が理解する限り、私はjavaプラグインをルートプロジェクトに適用しないので、buildタスクを持つことは想定されていません。

  • gradle tasksの出力は、buildタスクを示します。
  • ですが、gradle tasks --allの出力には、代わりに:subproject1:build:subproject2:buildが表示されます。

私の質問です - このシナリオでは正確に何が実行されますか? gradleはすべてのサブプロジェクトの電源パターンと一致するすべてのタスクを見つけるだけですか?このタスクの名前解決に関する具体的な規則はありますか?これについての詳しい情報はどこにありますか?

答えて

0

はい、あなたは正しいです。タスク名またはタスク名省略形だけを使用すると、タスクは現在のディレクトリのすべてのサブプロジェクトで実行されます。 subporject1buildタスクのみを呼び出す場合は、絶対パスにgradle :subproject1:buildまたは相対パスを使用します。ルートディレクトリにいる場合e。 g。相対パスはgradle subproject1:buildとなります。
詳しくはhttps://docs.gradle.org/current/userguide/intro_multi_project_builds.html#N10762をご覧ください。

Btw。 Gradle Wrapperの使用を検討する必要があります。 Gradleの各プロジェクトjusingもGradle Wrapperを使用する必要があります。 Gradleの最も効果的な強化の1つです.GradleやMaven、Antなどではなく、Javaがインストールされている必要があります。また、常にGradleのバージョンで動作します。

+0

ありがとう - 私は何とかドキュメントの最後の段落を逃しました。 – Kassiar

+0

ラッパーについて - 私はちょうどGradleでスピードアップし、ベストプラクティスやものを知らずに少し失った感じがします。それで、ラッパーを生成し、それをバージョンコントロールに追加し、その時点から 'gradlew'だけを使用するのが普通だと考えられますか? – Kassiar

+0

間違いなく..... – Vampire

関連する問題