2016-04-25 109 views
0

我有一個非常基本的多項目搖籃設置是這樣的:搖籃多項目的根級別生成任務

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

是的,你是對的。如果只使用任務名稱或任務名稱縮寫,則在當前目錄的所有子項目中執行該任務。如果您只想調用subporject1 s build任務,請使用gradle :subproject1:build或相對路徑的絕對路徑。如果你在根目錄e。 G。相對路徑將爲gradle subproject1:build
您可以在https://docs.gradle.org/current/userguide/intro_multi_project_builds.html#N10762瞭解更多關於它的信息。

Btw。你應該考慮使用Gradle Wrapper。每個項目都會使用Gradle Wrapper。它是Gradle最有效的優化之一,因爲您只需要安裝Java,而不是Gradle或Maven或Ant或其他任何東西,並且構建始終與您設計的Gradle版本一起運行。

+0

謝謝 - 我不知何故錯過了文檔中的最後一段。 – Kassiar

+0

關於包裝 - 我只是加快與Gradle,並覺得有點不知道最佳做法和東西有點失落。那麼它是否被認爲是生成包裝的標準,將其添加到版本控制中,並且從那時起只使用'gradlew'? – Kassiar

+0

絕對..... – Vampire