mix*_*xel 23 global build gradle google-drive-api
我想知道是否可以配置Gradle build为所有项目使用一个全局目录?我需要这个,因为我将所有项目存储在Google Drive文件夹中(用于备份和从其他设备快速访问),当我构建项目时,Google Drive正在同步项目build目录时加载CPU .所以我想将build目录移到Google云端硬盘之外.
此选项对于那些希望使用RAM磁盘作为build目录存储来构建项目的人也很有用.
mix*_*xel 50
感谢Peter Niederwieser.由于其他细节,我决定发布自己的答案.
要设置全局构建目录,您需要将这些行添加到〜/ .gradle/init.gradle:
gradle.projectsLoaded {
rootProject.allprojects {
buildDir = "/path/to/build/${rootProject.name}/${project.name}"
}
}
Run Code Online (Sandbox Code Playgroud)
build在RAM磁盘上拥有全局目录的不错选项.
如果您是macOS(OS X)用户,则可以执行以下操作:
diskutil erasevolume HFS+ 'RAMDiskName' `hdiutil attach -nomount ram://XXXXXX`
Run Code Online (Sandbox Code Playgroud)
其中XXXXXX是512字节块的计数(例如,对于128MB RAM磁盘,它是262114)
而buildDir行将是:
buildDir = "/Volumes/RAMDiskName/${rootProject.name}/${project.name}"
Run Code Online (Sandbox Code Playgroud)
您还可以将配置扩展到:
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)
}
Run Code Online (Sandbox Code Playgroud)
在项目settings.gradle中:
gradle.ext.group = 'com.example.yourproject'
Run Code Online (Sandbox Code Playgroud)
您也可以在项目build.gradle中使用此设置来设置项目组,但这是可选的:
allprojects {
...
group gradle.ext.group
}
Run Code Online (Sandbox Code Playgroud)
构建.gradle:
def baseDir = "/global/build/dir/$project.name"
buildDir = baseDir + "/root"
subprojects {
buildDir = baseDir + project.path.replaceFirst(":", "/").replace(":", ".")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16640 次 |
| 最近记录: |