2012-12-14 31 views
8

在gradle中,使用buildSrc文件作爲頂層文件的目的是什麼,而不僅僅是一個典型的java項目佈局(src/main/java)?gradle的buildSrc文件夾的用途是什麼?

如果我有

src 
    main 
     java 

buildSrc 
    src 
     main 
      java 

佈局會有何不同(或者這樣做的原因)?它在多模塊項目中更有用嗎?即使是一個多模塊項目,我不能這樣做

proj1 
    src 


proj2 
    src 

然後就是有一個頂層的build.gradle(在同一水平proj1proj2)跨項目定義常用的設置?

回答

22

buildSrc是一個獨立的構建,其目的是要建立任何任務,插件或其他它意在構建腳本的主要構建使用類,但沒有被共享跨構建(*)不可能將這樣的類構建爲主構建的一部分,因爲它們必須存在才能編譯/評估主構建的構建腳本,並且Gradle在構建腳本之前編譯/評估所有構建腳本任何工作(配置與執行階段)。

與將所有構建代碼放入構建腳本相比,buildSrc爲您提供了一種開發構建代碼的方式,它更像普通代碼,可以測試的類,導入IDE等。這是保持構建腳本的一種方法簡單和乾燥,即使是更復雜的構建。

buildSrc在多項目構建中更常見,因爲更大的構建更可能實現自己的自定義任務和插件。

隨着時間的推移,buildSrc將成長爲一個更普遍的能力,在單個Gradle調用中執行多個依賴的構建

(*)跨版本共享類是可能的,但更多的參與。特別是,您需要將這些類發佈到存儲庫,並且使用構建必須從那裏顯式導入它們,這與在構建之間共享生產庫時類似。

+0

感謝您的詳細解釋! –

相關問題