2017-08-12 33 views
1

作爲我的大型多項目構建的一部分,我對各種devops事物有大約25個任務。build.gradle中的任務太多

項目的結構看起來像這樣

RootProject 
    -buildSrc 
    -DirectoryA 
    -SubProjectA1 
    -SubProjectA2 
    -SubProjectA3 
    -DirectoryB 
    -SubProjectB1 
    -SubProjectB2 
    -DirectoryC 
    -SubProjectC1 
    -SubProjectC2 

等。

目錄是那裏只是爲了方便不同的項目。 RootProject and all SubProject have build.gradle files。

在RootProject build.gradle文件中,大約有25個任務。 這些任務在根項目和子項目上進行配置。

他們讓build.gradle相當長和複雜。所以我想將它們移動到單獨的Tasks.gradle文件下,位於buildSrc目錄下。然後用「拉起來」

這是一個很好的做法還是有更好的方法?

如果我拉他們,還有另一個問題。一些任務配置爲子項目,其他配置爲RootProject。所以我不能把它們放到單個文件的Tasks.gradle文件中。

我應該然後把它們弄成RootProjectTasks.gradleSubProjectsTasks.gradle

這一切都感覺有點不對勁......

+0

的可能的複製[有沒有辦法分裂/因數出搖籃建設的公共部分(https://stackoverflow.com/questions/2566685/is-there -a路到分裂因子超出普通零件-的-gradle這個建造) – tkruse

回答

0

如果使用詹金斯構建,那麼你應該做的build.gradle每個子項目,也爲根項目。

在Jenkins中,您可以多次調用Gradle腳本。 因此,您可以逐個調用每個build.gradle文件。

還有另一種方法來調用每個build.gradle子項目通過只調用根項目build.gradle。 對於您必須settings.gradle

添加以下行包括「:子PROJECT1名稱」,「:分項目2名」,「:分項目3名」,

隨意獲取更多信息

0

不要把*.gradle文件到文件夾buildSrc。該buildSrc文件夾是應該buildSrc/src/main/groovy組織就像一個項目,並且只包含*.java*.groovy文件嵌套的項目文件夾。

您可以提取任務分解成獨立的gradle這個文件,並通過apply from囊括其中。適用於所有項目,可以去這裏

任務:僅適用於所有子項目可以去這裏

allprojects { 
    apply plugin: 'idea' 
} 

任務:

subprojects { 
    apply plugin: 'java' 
} 

您可以也包括他們直接從子模塊是需要他們。或只適用於一些子項目,像這樣:

def clientProjects() { 
    return subprojects.findAll { 
      // some predicate that is true only for client projects 
    } 
} 

configure(clientProjects()) { 
    apply plugin: ... 
}