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"演示中),他认为他们最大的错误之一就是使用
您可以在
1 2 3 | rootProject.children.each { it.buildFileName = it.name + '.gradle' } |
您可以在Gradle的实际操作中找到相关内容