2013-10-15 78 views
3

。 。我們正在遷移到Rational Team Concert(RTC)並希望利用其「組件」定義。在本地SCM的工作區,其是平坦的,它的物理根不是在SCM,像這樣在流結果使用的部件:如何爲沒有物理根的平面項目設置Gradle設置

|- workspace-name 
    | component1 
    | component2 
    <empty> 

文件中的源代碼僅在組件文件夾存在,workspace-name僅僅是一個文件系統父所以除非在構建時將代碼複製到那裏,否則它不包含構建文件或代碼。

我發現了很多很好的問題和答案,例如flat project layouts,generic component layoutexcellent primer關於Gradle如何工作的邏輯與物理佈局。這些仍然沒有解決我的困惑。

什麼我試圖做的是:

|- workspace-name 
    | component1 
    | component2 
    | buildSrc 

我有這樣的buildSrc/settings.gradle

includeFlat '../component1/compa','../component2' 

馬上蝙蝠它給了我,我的自定義任務(定義的錯誤在buildSrc\src\main\groovy\CustomTask.groovy)不存在(could not find property 'CustomTask' on project ':component1/compa')。

我相信這是因爲buildSrc的projectroot目錄本身(如暗示的gradle docs),例如:

|- workspace-name 
    | component1 
    | component2 
    | buildSrc 

這使我想,也許我需要成爲既啞分量邏輯父代以及buildSrc父代。

我的問題是,如果我沒有物理根,什麼是「最好」的地方把我的settings.gradle文件?每個組件都需要自定義任務的代碼來構建,所以我也在尋找最好的地方(如果不在虛擬組件中)。謝謝!

安迪

回答

1

我會盡量遠離虛擬組件,並且:

  • 或者存儲buildSrc文件夾中的每個組件,特定組件的搖籃文件
  • 或存儲所有buidSrc搖籃文件放在一個組件中,並且有一個腳本能夠在請求構建時複製/創建每個組件所需的內容。
+0

感謝您的反饋。我有點擔心必須將構建腳本複製到不同的地方。 – AndyJ

1

每個版本只能有一個buildSrc,並且您將它放在正確的位置。然而,buildSrc是它自己的版本,並且使其包含主版本的項目(正如您顯然嘗試過的版本)是沒有意義的。此外,includeFlat的參數不是文件路徑。不太確定你想在這裏實現什麼。

至於主版本的settings.gradle,如果你不能把它放到根目錄下,另一個選項是把它放到一個名爲master的目錄中。 (這是一個內置的約定,不能重新配置。)

+0

感謝您的反饋 - 我將使用「主人」進行調查。我使用includeFlat的目的是嘗試從相鄰級別的「虛擬」文件夾構建項目關係。看起來這是正確的角度,但至少現在它有一個更聰明的名字。 – AndyJ