gpt4 book ai didi

build - Gradle 全局构建目录

转载 作者:IT老高 更新时间:2023-10-28 11:11:42 27 4
gpt4 key购买 nike

我想知道是否可以将 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}"

您还可以扩展配置到:

  1. 从环境变量中获取全局构建路径或回退到项目目录中的build目录;
  2. 在路径中包含项目组,这使得路径更加独特,特别是如果您有多个同名项目。

~/.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
}

关于build - Gradle 全局构建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23340946/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com