diff --git a/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelJavaExtension.kt b/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelJavaExtension.kt index bf584e71100..cf45d5a2725 100644 --- a/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelJavaExtension.kt +++ b/buildSrc/src/main/kotlin/io/opentelemetry/gradle/OtelJavaExtension.kt @@ -5,8 +5,15 @@ package io.opentelemetry.gradle +import org.gradle.api.JavaVersion import org.gradle.api.provider.Property abstract class OtelJavaExtension { abstract val moduleName: Property + + abstract val minJavaVersionSupported: Property + + init { + minJavaVersionSupported.convention(JavaVersion.VERSION_1_8) + } } diff --git a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts index be2730ef1af..e153a7a6360 100644 --- a/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts @@ -1,4 +1,5 @@ import io.opentelemetry.gradle.OtelJavaExtension +import org.gradle.api.JavaVersion import org.gradle.api.tasks.testing.logging.TestExceptionFormat plugins { @@ -74,7 +75,7 @@ val testJavaVersion = gradle.startParameter.projectProperties.get("testJavaVersi tasks { withType().configureEach { with(options) { - release.set(8) + release.set(otelJava.minJavaVersionSupported.map { it.majorVersion.toInt() }) if (name != "jmhCompileGeneratedClasses") { compilerArgs.addAll( @@ -108,14 +109,6 @@ tasks { withType().configureEach { useJUnitPlatform() - if (testJavaVersion != null) { - javaLauncher.set( - javaToolchains.launcherFor { - languageVersion.set(JavaLanguageVersion.of(testJavaVersion.majorVersion)) - }, - ) - } - val defaultMaxRetries = if (System.getenv().containsKey("CI")) 2 else 0 val maxTestRetries = gradle.startParameter.projectProperties["maxTestRetries"]?.toInt() ?: defaultMaxRetries @@ -174,6 +167,19 @@ tasks { } } +afterEvaluate { + tasks.withType().configureEach { + if (testJavaVersion != null) { + javaLauncher.set( + javaToolchains.launcherFor { + languageVersion.set(JavaLanguageVersion.of(testJavaVersion.majorVersion)) + } + ) + isEnabled = isEnabled && testJavaVersion >= otelJava.minJavaVersionSupported.get() + } + } +} + // Add version information to published artifacts. plugins.withId("otel.publish-conventions") { tasks { diff --git a/exporters/sender/jdk/build.gradle.kts b/exporters/sender/jdk/build.gradle.kts index c5c1c1269fb..7f848b7708b 100644 --- a/exporters/sender/jdk/build.gradle.kts +++ b/exporters/sender/jdk/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.api.JavaVersion + plugins { id("otel.java-conventions") id("otel.publish-conventions") @@ -5,6 +7,7 @@ plugins { description = "OpenTelemetry JDK HttpSender" otelJava.moduleName.set("io.opentelemetry.exporter.sender.jdk.internal") +otelJava.minJavaVersionSupported.set(JavaVersion.VERSION_11) dependencies { implementation(project(":exporters:common")) @@ -12,16 +15,3 @@ dependencies { testImplementation("com.fasterxml.jackson.core:jackson-core") } - -tasks { - withType().configureEach { - sourceCompatibility = "11" - targetCompatibility = "11" - options.release.set(11) - } -} - -tasks.test { - val testJavaVersion: String? by project - enabled = !testJavaVersion.equals("8") -} diff --git a/integration-tests/graal-incubating/build.gradle.kts b/integration-tests/graal-incubating/build.gradle.kts index 3ba7ef6860a..c30cb597f2d 100644 --- a/integration-tests/graal-incubating/build.gradle.kts +++ b/integration-tests/graal-incubating/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.api.JavaVersion + plugins { id("otel.java-conventions") id("org.graalvm.buildtools.native") @@ -5,6 +7,7 @@ plugins { description = "OpenTelemetry Graal Integration Tests (Incubating)" otelJava.moduleName.set("io.opentelemetry.graal.integration.tests.incubating") +otelJava.minJavaVersionSupported.set(JavaVersion.VERSION_11) sourceSets { main { @@ -25,17 +28,6 @@ dependencies { // org.graalvm.buildtools.native plugin requires java 11+ as of version 0.9.26 // https://github.com/graalvm/native-build-tools/blob/master/docs/src/docs/asciidoc/index.adoc -tasks { - withType().configureEach { - sourceCompatibility = "11" - targetCompatibility = "11" - options.release.set(11) - } - withType().configureEach { - val testJavaVersion: String? by project - enabled = !testJavaVersion.equals("8") - } -} graalvmNative { binaries { diff --git a/integration-tests/graal/build.gradle.kts b/integration-tests/graal/build.gradle.kts index 666777d54aa..4086a91e778 100644 --- a/integration-tests/graal/build.gradle.kts +++ b/integration-tests/graal/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.api.JavaVersion + plugins { id("otel.java-conventions") id("org.graalvm.buildtools.native") @@ -5,6 +7,7 @@ plugins { description = "OpenTelemetry Graal Integration Tests" otelJava.moduleName.set("io.opentelemetry.graal.integration.tests") +otelJava.minJavaVersionSupported.set(JavaVersion.VERSION_11) sourceSets { main { @@ -23,17 +26,6 @@ dependencies { // org.graalvm.buildtools.native plugin requires java 11+ as of version 0.9.26 // https://github.com/graalvm/native-build-tools/blob/master/docs/src/docs/asciidoc/index.adoc -tasks { - withType().configureEach { - sourceCompatibility = "11" - targetCompatibility = "11" - options.release.set(11) - } - withType().configureEach { - val testJavaVersion: String? by project - enabled = !testJavaVersion.equals("8") - } -} graalvmNative { binaries { diff --git a/javadoc-crawler/build.gradle.kts b/javadoc-crawler/build.gradle.kts index 0b7920b2ebc..e55b2263670 100644 --- a/javadoc-crawler/build.gradle.kts +++ b/javadoc-crawler/build.gradle.kts @@ -1,3 +1,5 @@ +import org.gradle.api.JavaVersion + plugins { id("otel.java-conventions") } @@ -9,22 +11,9 @@ dependencies { description = "OpenTelemetry Javadoc Crawler" otelJava.moduleName.set("io.opentelemetry.javadocs") +otelJava.minJavaVersionSupported.set(JavaVersion.VERSION_17) tasks { - withType().configureEach { - sourceCompatibility = "17" - targetCompatibility = "17" - options.release.set(17) - } - - // only test on java 17+ - val testJavaVersion: String? by project - if (testJavaVersion != null && Integer.valueOf(testJavaVersion) < 17) { - test { - enabled = false - } - } - val crawl by registering(JavaExec::class) { dependsOn(classes)