build.gradle中的任务太多

build.gradle中的任务太多,gradle,build,build.gradle,devops,gradlew,Gradle,Build,Build.gradle,Devops,Gradlew,作为大型多项目构建的一部分,我有大约25个任务用于各种devops 项目的结构如下所示 RootProject -buildSrc -DirectoryA -SubProjectA1 -SubProjectA2 -SubProjectA3 -DirectoryB -SubProjectB1 -SubProjectB2 -DirectoryC -SubProjectC1 -SubProjectC2 等等 目录只

作为大型多项目构建的一部分,我有大约25个任务用于各种devops

项目的结构如下所示

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

目录只是为了方便地分隔项目。RootProject和所有子项目都有build.gradle文件

在RootProject build.gradle文件中,大约有25个任务。 在根项目和子项目上都配置了这些任务

他们使build.gradle变得相当长和复杂。因此,我考虑将它们移动到位于buildSrc目录下的单独Tasks.gradle文件中。然后用“apply from”把他们拉进来

这是一个好做法还是有更好的方法?

如果我把他们拉进来,还有另一个问题。一些任务是为子项目配置的,另一些任务是为根项目配置的。所以我不能把它们放在一个Tasks.gradle文件中

然后我是否应该将它们放入类似于RootProjectTasks.gradle和SubProjectsTasks.gradle的程序中


这一切都感觉有点不对劲

如果您使用Jenkins进行构建,那么您应该为每个子项目以及根项目创建build.gradle

在Jenkins中,您可以多次调用Gradle脚本。 因此,您可以逐个调用每个build.gradle文件

还有另一种方法可以通过只调用根项目build.gradle来调用子项目的每个build.gradle。 为此,您必须在设置中添加以下行。渐变

包括“:子项目1-name”、“:子项目2-name”、“:子项目3-name”、


请随时获取更多信息

如果您使用Jenkins进行构建,那么您应该为每个子项目以及根项目创建build.gradle

在Jenkins中,您可以多次调用Gradle脚本。 因此,您可以逐个调用每个build.gradle文件

还有另一种方法可以通过只调用根项目build.gradle来调用子项目的每个build.gradle。 为此,您必须在设置中添加以下行。渐变

包括“:子项目1-name”、“:子项目2-name”、“:子项目3-name”、


如需更多信息,请随时查看。

请勿将
*.gradle
文件放入buildSrc文件夹。buildSrc文件夹是一个嵌套的项目文件夹,应该像项目一样组织,并且只包含
buildSrc/src/main/groovy
中的
*.java
*.groovy
文件

您可以将任务提取到单独的gradle文件中,并通过
apply from
将其包括在内

适用于所有项目的任务可以转到此处:

allprojects {
    apply plugin: 'idea'
}
subprojects {
    apply plugin: 'java'
}
仅适用于所有子项目的任务可以转到此处:

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: ...
}

不要将
*.gradle
文件放入buildSrc文件夹。buildSrc文件夹是一个嵌套的项目文件夹,应该像项目一样组织,并且只包含
buildSrc/src/main/groovy
中的
*.java
*.groovy
文件

您可以将任务提取到单独的gradle文件中,并通过
apply from
将其包括在内

适用于所有项目的任务可以转到此处:

allprojects {
    apply plugin: 'idea'
}
subprojects {
    apply plugin: 'java'
}
仅适用于所有子项目的任务可以转到此处:

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: ...
}
可能的重复可能的重复