Gradle多项目自定义build.Gradle文件名

Gradle多项目自定义build.Gradle文件名,gradle,build,multi-project,Gradle,Build,Multi Project,我有一个多项目的Gradle构建,它当前通过一个build.Gradle文件进行配置 这个项目中有70多个模块,单个(巨大的)build.gradle文件使用起来很麻烦,所以我想把它分成每个模块的小buildscript文件 现在,我不希望有70个小build.gradle文件(每个模块中有一个),因为这会使在IDE中导航到特定的build.gradle成为一件麻烦事(文件之间的唯一区别是它们的路径) 我想要的是每个模块的buildscript文件以模块名命名 与此相反: root |--f

我有一个多项目的Gradle构建,它当前通过一个build.Gradle文件进行配置

这个项目中有70多个模块,单个(巨大的)build.gradle文件使用起来很麻烦,所以我想把它分成每个模块的小buildscript文件

现在,我不希望有70个小build.gradle文件(每个模块中有一个),因为这会使在IDE中导航到特定的build.gradle成为一件麻烦事(文件之间的唯一区别是它们的路径)

我想要的是每个模块的buildscript文件以模块名命名

与此相反:

root  
|--foo\  
|--| build.gradle  
|--bar\  
|--| build.gradle 
我想要这个:

root  
|--foo\  
|--| foo.gradle  
|--bar\  
|--| bar.gradle 
由于这似乎没有得到官方的支持,我尝试对root build.gradle进行了一些黑客攻击,但似乎应用.gradle文件是在项目配置之前发生的,因此对于依赖于其他项目的项目,这会给出一个错误:

在root build.gradle中:

subprojects { subProject ->
    rootProject.apply from: "${subProject.name}/${subProject.name}.gradle"
}
foo.gradle,它不是标准的build.gradle文件:

project('foo') {
    dependencies {
        compile project(':bar')
    }
} 
rootProject.buildFileName = 'epub-organizer.gradle'

rootProject.children.each { project ->
    String fileBaseName = project.name.replaceAll("\p{Upper}") { "-${it.toLowerCase()}" }
    project.buildFileName = "${fileBaseName}.gradle"
}

有没有办法让它像这样工作?

您可以在
设置.gradle
文件中自定义生成脚本的名称。查看Ben Muschko最近关于构建的演示,或者看看类似的定制是在哪里完成的

rootProject.children.each {
  it.buildFileName = it.name + '.gradle'
}
对“gradle rename build.gradle”的web搜索呈现了以下示例settings.gradle文件:

project('foo') {
    dependencies {
        compile project(':bar')
    }
} 
rootProject.buildFileName = 'epub-organizer.gradle'

rootProject.children.each { project ->
    String fileBaseName = project.name.replaceAll("\p{Upper}") { "-${it.toLowerCase()}" }
    project.buildFileName = "${fileBaseName}.gradle"
}
请注意,作者还在这里重命名根项目的构建脚本,这可能是您想要的,也可能是您不想要的


Gradle的作者之一Hans Dockter曾在某个地方说过(我相信是在他的文章中),他觉得他们最大的错误之一是使用
build.Gradle
作为默认文件名。

你可以在Gradle in action中找到此内容,manning


谢谢您,先生!在我尝试的所有谷歌搜索中,“重命名”并不是其中之一。谢谢详见上文链接“多项目”中Ben Muschko 78张幻灯片中的第52张