Skip to content

Commit cea03fa

Browse files
authored
Gradle configuration caching: jflex (#15293)
1 parent 3d187ed commit cea03fa

File tree

1 file changed

+45
-3
lines changed

1 file changed

+45
-3
lines changed

instrumentation-api-incubator/build.gradle.kts

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
plugins {
2-
id("org.xbib.gradle.plugin.jflex")
3-
42
id("otel.java-conventions")
53
id("otel.animalsniffer-conventions")
64
id("otel.jacoco-conventions")
@@ -10,7 +8,11 @@ plugins {
108

119
group = "io.opentelemetry.instrumentation"
1210

11+
val jflex = configurations.create("jflex")
12+
1313
dependencies {
14+
jflex("de.jflex:jflex:1.9.1")
15+
1416
api("io.opentelemetry.semconv:opentelemetry-semconv")
1517
api(project(":instrumentation-api"))
1618
api("io.opentelemetry:opentelemetry-api-incubator")
@@ -24,6 +26,42 @@ dependencies {
2426
testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating")
2527
}
2628

29+
val jflexSourceDir = layout.projectDirectory.dir("src/main/jflex")
30+
val jflexOutputDir = layout.buildDirectory.dir("generated/sources/jflex")
31+
32+
val generateJflex by tasks.registering(JavaExec::class) {
33+
classpath(jflex)
34+
mainClass.set("jflex.Main")
35+
36+
inputs.dir(jflexSourceDir)
37+
outputs.dir(jflexOutputDir)
38+
39+
val sourceDir = jflexSourceDir
40+
val outputDirProvider = jflexOutputDir
41+
42+
doFirst {
43+
val outputDir = outputDirProvider.get().asFile
44+
outputDir.mkdirs()
45+
val specFile = sourceDir.asFile.resolve("SqlSanitizer.jflex")
46+
args(
47+
"-d",
48+
outputDir.absolutePath,
49+
"--nobak",
50+
specFile.absolutePath,
51+
)
52+
}
53+
}
54+
55+
sourceSets {
56+
main {
57+
java.srcDir(jflexOutputDir)
58+
}
59+
}
60+
61+
tasks.compileJava {
62+
dependsOn(generateJflex)
63+
}
64+
2765
tasks {
2866
// exclude auto-generated code
2967
named<Checkstyle>("checkstyleMain") {
@@ -38,7 +76,11 @@ tasks {
3876
}
3977

4078
sourcesJar {
41-
dependsOn("generateJflex")
79+
dependsOn(generateJflex)
80+
// Avoid configuration cache issue by not capturing task reference
81+
from("src/main/jflex") {
82+
include("**/*.java")
83+
}
4284
}
4385

4486
val testStableSemconv by registering(Test::class) {

0 commit comments

Comments
 (0)