11plugins {
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
119group = " io.opentelemetry.instrumentation"
1210
11+ val jflex = configurations.create(" jflex" )
12+
1313dependencies {
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+
2765tasks {
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