【发布时间】:2015-02-17 10:45:08
【问题描述】:
我目前正在通过阅读一堆 gradle 书籍并查看大型 java 项目(如 spring 框架、hibernate 和 gradle 项目本身)的 gradle 构建脚本来学习 gradle,目的是了解使用 gradle 的最佳实践。
我注意到在 gradle 多项目构建中有两个文件 settings.gradle 和 build.gradle 我的问题是。
- 多项目构建是否绝对需要
settings.gradle?可以滚动到build.gradle文件中吗? - 在我看过的一些开源项目中,我注意到
settings.gradle实际上包含代码,而不仅仅是设置,请参阅我在各种settings.gradle文件中找到的代码示例。什么样的代码应该放入settings.gradle?关于settings.grdale与build.gradle应该遵循的内容是否有最佳实践?链接的开源项目是否违反了这些最佳实践规则?
来自 Spring Security Project settings.gradle 只是来自 https://github.com/spring-projects/spring-security/blob/master/settings.gradle 的几行代码
include modules
modules.each {name ->
def p = findProject(":${name}")
p.name = "spring-security-${name}"
p.buildFileName = "${name}.gradle"
}
include samples
samples.each {name ->
def p = findProject(":${name}")
def fullName = name.replaceAll('/','')
p.name = "spring-security-samples-${fullName}"
p.projectDir = new File(settingsDir, "samples/${name}");
if(!p.buildFile.exists()) {
def buildFile = fullName.replaceFirst("-xml","")
p.buildFileName = "${buildFile}.gradle"
}
}
还有来自 gradle 项目本身的一个来自 https://github.com/gradle/gradle/blob/master/settings.gradle 的小 sn-p
rootProject.children.each {project ->
String fileBaseName = project.name.replaceAll("\\p{Upper}") { "-${it.toLowerCase()}" }
String projectDirName = "subprojects/$fileBaseName"
project.projectDir = new File(settingsDir, projectDirName)
project.buildFileName = "${fileBaseName}.gradle"
assert project.projectDir.isDirectory()
assert project.buildFile.isFile()
}
【问题讨论】: