Gradle多模块:如果每个子模块的Gradle.build文件已更改。没有可用的任务

Gradle多模块:如果每个子模块的Gradle.build文件已更改。没有可用的任务,gradle,build.gradle,Gradle,Build.gradle,我正在使用Gradle3.5,我有以下情况 我通过多个模块使用Spring框架。 考虑以下结构: root build.gradle child-01 build.gradle child-02 build.gradle child-03 build.gradle 直到这里一切都好 从上面观察每个.gradle文件都有相同的名称。它是build 通过gradle tasks命令,可以在控制台中列出每个子模块的build.gradle文件的所有我自己的任务。此外,如果使用

我正在使用
Gradle
3.5,我有以下情况

我通过多个模块使用
Spring框架
。 考虑以下结构:

root
   build.gradle
child-01
   build.gradle
child-02
   build.gradle
child-03
   build.gradle
直到这里一切都好

从上面观察每个
.gradle
文件都有相同的名称。它是
build

通过
gradle tasks
命令,可以在控制台中列出每个子模块的
build.gradle
文件的所有我自己的任务。此外,如果使用
gradle project
命令,我可以看到列出的每个项目及其各自的描述

在使用
Jenkins
时,我可以从每个子模块调用任何
build.gradle
文件中的任何任务,所有这些都可以正常工作

我做了以下变化:

root
   build.gradle
child-01
   child-01.gradle
child-02
   child-02.gradle
child-03
   child-03.gradle
对于每个子模块,每个
build.gradle
文件已分别重命名为
child-0#.gradle

现在,
gradle tasks
命令不打印我自己的任务,
Jenkins
由于任务不可用而失败。
gradle项目
命令打印所有子模块,但不显示说明


解决方案是什么?

您可以通过在设置.gradle文件中为相应的属性buildFileName>设置一个值来更改生成文件名

project(':child-01').buildFileName = 'child-01.gradle'

有关更多详细信息,请检查此链接。

您可以通过在设置.gradle文件中为相应的属性设置值来更改生成文件名

project(':child-01').buildFileName = 'child-01.gradle'

有关更多详细信息,请检查此链接

只要每个子项目的生成文件名与子项目名匹配,您就可以使用以下内容更新您的
设置.gradle
文件:

rootProject.children.each {
    it.buildFileName = "${it.name}.gradle"
}
这样,您就不需要显式地调用每个项目buildFileName

以下是关于该主题的讨论:


只要每个子项目的生成文件名与子项目名匹配,您就可以使用以下内容更新
设置.gradle
文件:

rootProject.children.each {
    it.buildFileName = "${it.name}.gradle"
}
这样,您就不需要显式地调用每个项目buildFileName

以下是关于该主题的讨论: