Skip to content

Commit 0357283

Browse files
committed
Use lazy configuration APIs
1 parent 86e2695 commit 0357283

5 files changed

+47
-54
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
import org.gradle.api.JavaVersion
2+
import org.gradle.api.provider.Property
3+
4+
@Suppress("LeakingThis")
5+
abstract class JavaLibraryExtension {
6+
7+
abstract val mainJavaVersion: Property<JavaVersion>
8+
abstract val testJavaVersion: Property<JavaVersion>
9+
10+
init {
11+
mainJavaVersion.convention(JavaVersion.VERSION_17)
12+
testJavaVersion.convention(JavaVersion.VERSION_21)
13+
}
214

3-
open class JavaLibraryExtension {
4-
var mainJavaVersion: JavaVersion = JavaVersion.VERSION_17
5-
var testJavaVersion: JavaVersion = JavaVersion.VERSION_21
6-
var configureRelease: Boolean = true
715
}

gradle/plugins/common/src/main/kotlin/junitbuild.java-library-conventions.gradle.kts

+24-32
Original file line numberDiff line numberDiff line change
@@ -276,47 +276,39 @@ tasks.compileTestJava {
276276
))
277277
}
278278

279-
afterEvaluate {
280-
configurations {
281-
apiElements {
282-
attributes {
283-
attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, extension.mainJavaVersion.majorVersion.toInt())
284-
}
285-
}
286-
runtimeElements {
287-
attributes {
288-
attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, extension.mainJavaVersion.majorVersion.toInt())
289-
}
279+
configurations {
280+
apiElements {
281+
attributes {
282+
attributeProvider(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, extension.mainJavaVersion.map { it.majorVersion.toInt() })
290283
}
291284
}
292-
tasks {
293-
compileJava {
294-
if (extension.configureRelease) {
295-
options.release = extension.mainJavaVersion.majorVersion.toInt()
296-
} else {
297-
sourceCompatibility = extension.mainJavaVersion.majorVersion
298-
targetCompatibility = extension.mainJavaVersion.majorVersion
299-
}
300-
}
301-
compileTestJava {
302-
if (extension.configureRelease) {
303-
options.release = extension.testJavaVersion.majorVersion.toInt()
304-
} else {
305-
sourceCompatibility = extension.testJavaVersion.majorVersion
306-
targetCompatibility = extension.testJavaVersion.majorVersion
307-
}
285+
runtimeElements {
286+
attributes {
287+
attributeProvider(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, extension.mainJavaVersion.map { it.majorVersion.toInt() })
308288
}
309289
}
290+
}
291+
292+
tasks {
293+
compileJava {
294+
options.release = extension.mainJavaVersion.map { it.majorVersion.toInt() }
295+
}
296+
compileTestJava {
297+
options.release = extension.testJavaVersion.map { it.majorVersion.toInt() }
298+
}
299+
}
300+
301+
afterEvaluate {
310302
pluginManager.withPlugin("groovy") {
311303
tasks.named<GroovyCompile>("compileGroovy").configure {
312304
// Groovy compiler does not support the --release flag.
313-
sourceCompatibility = extension.mainJavaVersion.majorVersion
314-
targetCompatibility = extension.mainJavaVersion.majorVersion
305+
sourceCompatibility = extension.mainJavaVersion.get().majorVersion
306+
targetCompatibility = extension.mainJavaVersion.get().majorVersion
315307
}
316308
tasks.named<GroovyCompile>("compileTestGroovy").configure {
317309
// Groovy compiler does not support the --release flag.
318-
sourceCompatibility = extension.testJavaVersion.majorVersion
319-
targetCompatibility = extension.testJavaVersion.majorVersion
310+
sourceCompatibility = extension.testJavaVersion.get().majorVersion
311+
targetCompatibility = extension.testJavaVersion.get().majorVersion
320312
}
321313
}
322314
}
@@ -335,6 +327,6 @@ pluginManager.withPlugin("java-test-fixtures") {
335327
config = resources.text.fromFile(checkstyle.configDirectory.file("checkstyleTest.xml"))
336328
}
337329
tasks.named<JavaCompile>("compileTestFixturesJava") {
338-
options.release = extension.testJavaVersion.majorVersion.toInt()
330+
options.release = extension.testJavaVersion.map { it.majorVersion.toInt() }
339331
}
340332
}

gradle/plugins/common/src/main/kotlin/junitbuild.kotlin-library-conventions.gradle.kts

+8-15
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,19 @@ tasks.named("kotlinSourcesJar") {
1111
enabled = false
1212
}
1313

14+
val javaLibraryExtension = project.the<JavaLibraryExtension>()
15+
1416
tasks.withType<KotlinCompile>().configureEach {
1517
compilerOptions {
18+
jvmTarget = javaLibraryExtension.mainJavaVersion.map { JvmTarget.fromTarget(it.toString()) }
1619
apiVersion = KotlinVersion.fromVersion("1.6")
1720
languageVersion = apiVersion
18-
allWarningsAsErrors = false
19-
// Compiler arg is required for Kotlin 1.6 and below
20-
// see https://kotlinlang.org/docs/whatsnew17.html#stable-opt-in-requirements
21-
freeCompilerArgs.add("-opt-in=kotlin.RequiresOptIn")
21+
allWarningsAsErrors.convention(true)
22+
javaParameters = true
23+
freeCompilerArgs.addAll("-Xsuppress-version-warnings", "-opt-in=kotlin.RequiresOptIn")
2224
}
2325
}
2426

25-
afterEvaluate {
26-
val extension = project.the<JavaLibraryExtension>()
27-
tasks {
28-
withType<KotlinCompile>().configureEach {
29-
compilerOptions.jvmTarget = JvmTarget.fromTarget(extension.mainJavaVersion.toString())
30-
compilerOptions.javaParameters = true
31-
}
32-
named<KotlinCompile>("compileTestKotlin") {
33-
compilerOptions.jvmTarget = JvmTarget.fromTarget(extension.testJavaVersion.toString())
34-
}
35-
}
27+
tasks.named<KotlinCompile>("compileTestKotlin") {
28+
compilerOptions.jvmTarget = javaLibraryExtension.testJavaVersion.map { JvmTarget.fromTarget(it.toString()) }
3629
}

gradle/plugins/common/src/main/kotlin/junitbuild.osgi-conventions.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,8 @@ tasks.withType<Jar>().named {
7979
val osgiProperties by tasks.registering(WriteProperties::class) {
8080
destinationFile = layout.buildDirectory.file("verifyOSGiProperties.bndrun")
8181
property("-standalone", true)
82-
project.extensions.getByType(JavaLibraryExtension::class.java).let { javaLibrary ->
83-
property("-runee", "JavaSE-${javaLibrary.mainJavaVersion}")
82+
project.extensions.getByType(JavaLibraryExtension::class).let { javaLibrary ->
83+
property("-runee", Callable { "JavaSE-${javaLibrary.mainJavaVersion.get()}" })
8484
}
8585
property("-runrequires", "osgi.identity;filter:='(osgi.identity=${project.name})'")
8686
property("-runsystempackages", "jdk.internal.misc,jdk.jfr,sun.misc")

platform-tests/platform-tests.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ tasks {
131131
dependsOn(testWoodstox)
132132
}
133133
named<JavaCompile>(processStarter.compileJavaTaskName).configure {
134-
options.release = javaLibrary.testJavaVersion.majorVersion.toInt()
134+
options.release = javaLibrary.testJavaVersion.map { it.majorVersion.toInt() }
135135
}
136136
named<Checkstyle>("checkstyle${processStarter.name.capitalized()}").configure {
137137
config = resources.text.fromFile(checkstyle.configDirectory.file("checkstyleMain.xml"))

0 commit comments

Comments
 (0)