2017-08-12 94 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: ... 
}