diff --git a/gradle.properties b/gradle.properties index fef595296b18..bc3c93e2600b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,6 @@ org.gradle.parallel=true org.gradle.caching=true +org.gradle.configuration-cache=true org.gradle.priority=low diff --git a/instrumentation-api-incubator/build.gradle.kts b/instrumentation-api-incubator/build.gradle.kts index cf8224b99cdd..d4621a5ea05b 100644 --- a/instrumentation-api-incubator/build.gradle.kts +++ b/instrumentation-api-incubator/build.gradle.kts @@ -1,6 +1,4 @@ plugins { - id("org.xbib.gradle.plugin.jflex") - id("otel.java-conventions") id("otel.animalsniffer-conventions") id("otel.jacoco-conventions") @@ -10,7 +8,17 @@ plugins { group = "io.opentelemetry.instrumentation" +// JFlex configuration - manual integration for configuration cache compatibility +configurations { + val jflex by creating { + isTransitive = true + } +} + dependencies { + "jflex"("de.jflex:jflex:1.9.1") + "jflex"("com.github.vbmacher:java-cup-runtime:11b-20160615") + api("io.opentelemetry.semconv:opentelemetry-semconv") api(project(":instrumentation-api")) api("io.opentelemetry:opentelemetry-api-incubator") @@ -24,6 +32,41 @@ dependencies { testImplementation("io.opentelemetry.semconv:opentelemetry-semconv-incubating") } +// Manual JFlex task - configuration cache compatible +val generateJflex by tasks.registering(JavaExec::class) { + description = "Generate Java code from JFlex files" + group = "build" + + classpath = configurations.getByName("jflex") + mainClass.set("jflex.Main") + + val jflexSourceDir = file("src/main/jflex") + val jflexOutputDir = file("build/generated/sources/jflex") + + inputs.dir(jflexSourceDir) + outputs.dir(jflexOutputDir) + + doFirst { + jflexOutputDir.mkdirs() + } + + args( + "-d", jflexOutputDir, + "--nobak", + "$jflexSourceDir/SqlSanitizer.jflex" + ) +} + +sourceSets { + main { + java.srcDir(generateJflex.map { it.outputs.files.singleFile }) + } +} + +tasks.compileJava { + dependsOn(generateJflex) +} + tasks { // exclude auto-generated code named("checkstyleMain") { @@ -38,7 +81,11 @@ tasks { } sourcesJar { - dependsOn("generateJflex") + dependsOn(generateJflex) + // Avoid configuration cache issue by not capturing task reference + from("src/main/jflex") { + include("**/*.java") + } } val testStableSemconv by registering(Test::class) { diff --git a/settings.gradle.kts b/settings.gradle.kts index 4488c3620b13..7d7486b7e8d9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,7 +5,6 @@ pluginManagement { id("com.gradle.plugin-publish") version "2.0.0" id("io.github.gradle-nexus.publish-plugin") version "2.0.0" id("org.jetbrains.kotlin.jvm") version "2.2.21" - id("org.xbib.gradle.plugin.jflex") version "3.0.2" id("com.github.bjornvester.xjc") version "1.8.2" id("org.graalvm.buildtools.native") version "0.11.2" id("com.google.osdetector") version "1.7.3"