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