build.gradle中的任务太多
作为大型多项目构建的一部分,我有大约25个任务用于各种devops 项目的结构如下所示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 等等 目录只
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: ...
}
可能的重复可能的重复