Skip to content

Commit 04ecb68

Browse files
authored
Improve Gradle build cacheability (#5188)
* Bump up Gradle plugins version * Allow cache relocatability for Delombok task * Declare Delombok task inputs/outputs inside DelombokArgumentProvider
1 parent 5bbffb6 commit 04ecb68

File tree

3 files changed

+32
-10
lines changed

3 files changed

+32
-10
lines changed

build.gradle

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,14 @@ subprojects {
4343
version = '1.18.20'
4444
}
4545

46+
4647
task delombok(type: io.franzbecker.gradle.lombok.task.DelombokTask) {
47-
def outputDir = file("$buildDir/delombok")
48-
outputs.dir(outputDir)
4948
outputs.cacheIf {
5049
true
5150
}
52-
for (srcDir in project.sourceSets.main.java.srcDirs) {
53-
// TODO: named input and relative path for `srcDir` to make task more cacheable
54-
inputs.dir(srcDir)
55-
// TODO: `outputDir` as relative path to make task more cacheable
56-
args(srcDir, "-d", outputDir, "-f", "generateDelombokComment:skip")
57-
}
51+
argumentProviders.addAll(
52+
new org.testcontainers.build.DelombokArgumentProvider(srcDirs: project.sourceSets.main.java.srcDirs, outputDir: file("$buildDir/delombok"))
53+
)
5854
}
5955
delombok.onlyIf {
6056
project.sourceSets.main.java.srcDirs.find { it.exists() }
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.testcontainers.build
2+
3+
import org.gradle.api.tasks.InputFiles
4+
import org.gradle.api.tasks.OutputDirectory
5+
import org.gradle.api.tasks.PathSensitive
6+
import org.gradle.api.tasks.PathSensitivity
7+
import org.gradle.process.CommandLineArgumentProvider
8+
9+
/**
10+
* Allows build cache relocatability for Delombok task
11+
*/
12+
class DelombokArgumentProvider implements CommandLineArgumentProvider {
13+
14+
@InputFiles
15+
@PathSensitive(PathSensitivity.RELATIVE)
16+
Set<File> srcDirs
17+
18+
@OutputDirectory
19+
File outputDir
20+
21+
@Override
22+
Iterable<String> asArguments() {
23+
return [srcDirs.collect { it.absolutePath }.join(" "), "-d", outputDir.absolutePath, "-f", "generateDelombokComment:skip"]
24+
}
25+
26+
}

settings.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ buildscript {
55
}
66
}
77
dependencies {
8-
classpath "com.gradle.enterprise:com.gradle.enterprise.gradle.plugin:3.8.1"
9-
classpath "com.gradle:common-custom-user-data-gradle-plugin:1.6.2"
8+
classpath "com.gradle.enterprise:com.gradle.enterprise.gradle.plugin:3.9"
9+
classpath "com.gradle:common-custom-user-data-gradle-plugin:1.6.5"
1010
}
1111
}
1212

0 commit comments

Comments
 (0)