我想知道是否可以将 Gradle 配置为对所有项目使用一个全局 build
目录?我需要这个,因为我将所有项目都存储在 Google Drive 文件夹中(用于备份和从其他设备快速访问),并且当我构建项目时,Google Drive 在同步项目 build
目录时正在加载 CPU。所以我想将 build
目录移到 Google Drive 之外。
对于那些想要使用 RAM 磁盘作为 build
目录的存储来构建项目的人来说,此选项也很有用。
最佳答案
感谢彼得·尼德维泽。由于更多细节,我决定发布自己的答案。
要设置全局构建目录,您需要将这些行添加到~/.gradle/init.gradle:
gradle.projectsLoaded {
rootProject.allprojects {
buildDir = "/path/to/build/${rootProject.name}/${project.name}"
}
}
在 RAM 磁盘上拥有全局 build
目录的不错选择。
如果您是 macOS (OS X) 用户,您可以这样做:
diskutil erasevolume HFS+ 'RAMDiskName' `hdiutil attach -nomount ram://XXXXXX`
其中 XXXXXX
是 512 字节 block 的计数(例如,对于 128MB RAM 磁盘是 262114)
而 buildDir
行将是:
buildDir = "/Volumes/RAMDiskName/${rootProject.name}/${project.name}"
您还可以扩展配置到:
build
目录;~/.gradle/init.gradle:
def configProject(p, buildDir) {
p.buildDir = "${buildDir}/${p.name}"
p.subprojects { s ->
configProject(s, "${p.buildDir}")
}
}
def buildDir = System.env.GRADLE_GLOBAL_BUILD_PATH
if (!buildDir?.trim()) {
buildDir = "build"
}
gradle.projectsLoaded {
if (ext.has("group")) {
buildDir += "/${ext.group}"
}
configProject(rootProject, buildDir)
}
在项目settings.gradle中:
gradle.ext.group = 'com.example.yourproject'
您也可以在项目 build.gradle 中使用此设置来设置项目组,但这是可选的:
allprojects {
...
group gradle.ext.group
}
https://stackoverflow.com/questions/23340946/