2013-10-04 63 views
1

我們有兩個Java組件的存儲庫,我們需要從這個存儲庫生成一個WAR。這些存儲庫中的Gradle構建腳本具有許多共同部分。 我們應該如何在資源庫之間共享這些通用的Gradle腳本:
- 將普通的Gradle腳本放入資源庫中;
- 有一個自定義的Gradle發行版,把它放入存儲庫?
有沒有其他想法?
如果我們將普通的Gradle腳本放入存儲庫,我們還需要將它們放在SCM中,並使它們保持同步 - 我們可能需要另一個Gradle腳本才能將Gradle腳本發佈到存儲庫。如何在資源庫之間共享Gradle腳本?

回答

4

有共享構建邏輯兩種方式之間架起:

  1. 寫包含共享邏輯構建腳本(如foo.gradle),把它在Web服務器上,並將其包含在其他的構建與apply from: "http://..." 。我們稱之爲腳本插件
  2. 創建一個獨立的插件項目(和構建),寫一個二進制插件(一類實現org.gradle.api.Plugin),發佈爲一個Jar到存儲庫,並將其包含在其他構建與apply plugin: ...buildscript {}部分。

腳本(但不是二進制)插件的限制是它們沒有被緩存。因此,使用腳本插件的構建只有在能夠連接到爲插件提供服務的Web服務器時纔會成功。

有關更多詳細信息,請參閱Gradle User Guide以及完整Gradle分佈中的許多樣本。