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

Gradle multi-project custom build.gradle file name

我有一个多项目Gradle构建,当前通过单个build.gradle文件配置。

该项目中有70多个模块,并且单个(巨大的)build.gradle文件使用起来很麻烦,因此我想将其拆分为每个模块的小型构建脚本文件。

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

我想要的是按模块名称命名的每个模块的构建脚本文件。

代替这个:

1
2
3
4
5
root  
|--foo\\  
|--| build.gradle  
|--bar\\  
|--| build.gradle

我要这个:

1
2
3
4
5
root  
|--foo\\  
|--| foo.gradle  
|--bar\\  
|--| bar.gradle

由于似乎未正式支持此功能,因此我尝试对root build.gradle进行了一些修改,但似乎在配置项目之前就应用了.gradle文件,因此对于依赖于其他项目的项目会产生错误项目:

在root build.gradle中:

1
2
3
subprojects { subProject ->
    rootProject.apply from:"${subProject.name}/${subProject.name}.gradle"
}

foo.gradle,这不是标准的build.gradle文件:

1
2
3
4
5
project('foo') {
    dependencies {
        compile project(':bar')
    }
}

有什么办法可以使它像这样工作吗?


通过简单的网络搜索" gradle named build.gradle",将呈现以下示例settings.gradle文件:

1
2
3
4
5
6
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)在某处表示(我相信这是他在2012年发布的" Rocking the Gradle"演示中),他认为他们最大的错误之一就是使用build.gradle作为默认文件名。


您可以在settings.gradle文件中自定义构建脚本的名称。 查看Ben Muschko最近关于多项目构建的演示,或查看Gradle来源中进行了类似定制的情况。

1
2
3
rootProject.children.each {
  it.buildFileName = it.name + '.gradle'
}


您可以在Gradle的实际操作中找到相关内容

enter image description here