Thanks to Peter Niederwieser. I decided to post my own answer because of additional details.
To setup global build directory you need to add these lines to ~/.gradle/init.gradle:
gradle.projectsLoaded {
rootProject.allprojects {
buildDir = "/path/to/build/${rootProject.name}/${project.name}"
}
}
Nice option to have global build
directory on the RAM disk.
If you are macOS (OS X) user you can do this with:
diskutil erasevolume HFS+ 'RAMDiskName' `hdiutil attach -nomount ram://XXXXXX`
where XXXXXX
is a count of 512-byte blocks (for example, it's 262114 for 128MB RAM disk)
And buildDir
line will be:
buildDir = "/Volumes/RAMDiskName/${rootProject.name}/${project.name}"
Also you can extend configuration to:
- get global build path from environment variable or fallback to
build
directory inside project directory;
- include project group in path, this makes path more unique especially if you have several projects with the same name.
~/.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)
}
And in project settings.gradle:
gradle.ext.group = 'com.example.yourproject'
Also you can use this setting in project build.gradle to set project group but this is optional:
allprojects {
...
group gradle.ext.group
}