Yev*_*sik 4 build multi-project gradle
我有一个多项目Gradle构建,目前通过单个build.gradle文件进行配置.
这个项目中有70多个模块,单个(巨大的)build.gradle文件使用起来很麻烦,所以我想将它拆分成小的每个模块的buildscript文件.
现在,我不想拥有70个小的build.gradle文件(每个模块中有一个),因为这会导致导航到特定的build.gradle IDE中的痛苦(文件之间的唯一区别就是它们的路径).
我想要的是我的每个模块的buildscript文件以模块名称命名.
而不是这个:
root
|--foo\
|--| build.gradle
|--bar\
|--| build.gradle
Run Code Online (Sandbox Code Playgroud)
我要这个:
root
|--foo\
|--| foo.gradle
|--bar\
|--| bar.gradle
Run Code Online (Sandbox Code Playgroud)
由于这似乎没有得到官方支持,我尝试了一下root build.gradle,但似乎在配置项目之前应用.gradle文件,所以这给依赖于其他项目的项目带来了错误项目:
在root build.gradle中:
subprojects { subProject ->
rootProject.apply from: "${subProject.name}/${subProject.name}.gradle"
}
Run Code Online (Sandbox Code Playgroud)
foo.gradle,它不是标准的build.gradle文件:
project('foo') {
dependencies {
compile project(':bar')
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让它像这样工作?
对"gradle rename build.gradle"进行简单的Web搜索会显示以下示例settings.gradle文件:
rootProject.buildFileName = 'epub-organizer.gradle'
rootProject.children.each { project ->
String fileBaseName = project.name.replaceAll("\p{Upper}") { "-${it.toLowerCase()}" }
project.buildFileName = "${fileBaseName}.gradle"
}
Run Code Online (Sandbox Code Playgroud)
请注意,作者也在这里重命名根项目的构建脚本,您可能想要也可能不想要它.
Gradle的作者之一Hans Dockter在某处说过(我相信这是他2012年的"Rocking the Gradle"演示),他觉得他们最大的错误之一就是使用build.gradle默认文件名.
您可以在settings.gradle文件中自定义构建脚本的名称.查看Ben Muschko最近关于多项目构建的演示,或查看完成类似定制的Gradle源代码.
rootProject.children.each {
it.buildFileName = it.name + '.gradle'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4372 次 |
| 最近记录: |