summaryrefslogtreecommitdiff
path: root/buildSrc/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/main')
-rw-r--r--buildSrc/src/main/kotlin/Libs.kt37
-rw-r--r--buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts4
-rw-r--r--buildSrc/src/main/kotlin/java-conventions.gradle.kts6
-rw-r--r--buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts9
-rw-r--r--buildSrc/src/main/kotlin/testing-conventions.gradle.kts26
5 files changed, 51 insertions, 31 deletions
diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt
index 6a73e1b9..09432b06 100644
--- a/buildSrc/src/main/kotlin/Libs.kt
+++ b/buildSrc/src/main/kotlin/Libs.kt
@@ -24,32 +24,27 @@
import org.gradle.api.JavaVersion
import org.gradle.api.Project
+import org.gradle.api.artifacts.VersionCatalog
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.getByType
/**
- * This class makes the version catalog accessible for the build scripts until Gradle adds support for it.
- *
- * See https://github.com/gradle/gradle/issues/15383
+ * Obtain the default [VersionCatalog] of the project.
*/
-public class Libs(project: Project) {
- /**
- * The version catalog of the project.
- */
- private val versionCatalog = project.extensions.getByType(VersionCatalogsExtension::class).named("libs")
+public val Project.defaultVersionCatalog: VersionCatalog
+ get() = project.extensions.getByType(VersionCatalogsExtension::class).named("libs")
- /**
- * Obtain the version for the specified [dependency][name].
- */
- operator fun get(name: String): String {
- val dep = versionCatalog.findLibrary(name).get().get()
- return "${dep.module.group}:${dep.module.name}:${dep.versionConstraint.displayName}"
- }
+/**
+ * Obtain the dependency string for the specified [name].
+ */
+public operator fun VersionCatalog.get(name: String): String {
+ val dep = findLibrary(name).get().get()
+ return "${dep.module.group}:${dep.module.name}:${dep.versionConstraint.displayName}"
+}
- companion object {
- /**
- * The JVM version to target.
- */
- val jvmTarget = JavaVersion.VERSION_11
- }
+/**
+ * Obtain the string representation of the version with the given [name].
+ */
+public fun VersionCatalog.getVersion(name: String): String {
+ return findVersion(name).get().displayName
}
diff --git a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts
index 554d2279..e16733a4 100644
--- a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts
@@ -50,7 +50,7 @@ tasks.named("jmh", JMHTask::class) {
dependencies {
constraints {
- val libs = Libs(project)
- jmh(libs["commons.math3"]) // XXX Force JMH to use the same commons-math3 version as OpenDC
+ val versionCatalog = project.defaultVersionCatalog
+ jmh(versionCatalog["commons.math3"]) // XXX Force JMH to use the same commons-math3 version as OpenDC
}
}
diff --git a/buildSrc/src/main/kotlin/java-conventions.gradle.kts b/buildSrc/src/main/kotlin/java-conventions.gradle.kts
index 8857d4ab..875ae2a7 100644
--- a/buildSrc/src/main/kotlin/java-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/java-conventions.gradle.kts
@@ -31,8 +31,10 @@ repositories {
}
java {
- sourceCompatibility = Libs.jvmTarget
- targetCompatibility = Libs.jvmTarget
+ toolchain {
+ val javaVersion = project.defaultVersionCatalog.getVersion("java")
+ languageVersion.set(JavaLanguageVersion.of(javaVersion))
+ }
}
tasks.withType<JavaCompile> {
diff --git a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
index 5ccc06a4..79afdf7c 100644
--- a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
@@ -29,8 +29,15 @@ plugins {
}
/* Project configuration */
+
+kotlin {
+ jvmToolchain {
+ val javaVersion = project.defaultVersionCatalog.getVersion("java")
+ languageVersion.set(JavaLanguageVersion.of(javaVersion))
+ }
+}
+
tasks.withType<KotlinCompile>().configureEach {
- kotlinOptions.jvmTarget = Libs.jvmTarget.toString()
kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
kotlinOptions.freeCompilerArgs += "-Xjvm-default=all"
}
diff --git a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
index ebeb58a4..a7fa9da9 100644
--- a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
@@ -34,10 +34,26 @@ tasks.test {
}
dependencies {
- val libs = Libs(project)
+ val versionCatalog = project.defaultVersionCatalog
- testImplementation(libs["junit.jupiter.api"])
- testImplementation(libs["junit.jupiter.params"])
- testImplementation(libs["mockk"])
- testRuntimeOnly(libs["junit.jupiter.engine"])
+ testImplementation(versionCatalog["junit.jupiter.api"])
+ testImplementation(versionCatalog["junit.jupiter.params"])
+ testImplementation(versionCatalog["mockk"])
+ testRuntimeOnly(versionCatalog["junit.jupiter.engine"])
+}
+
+tasks.register<Test>("testsOn18") {
+ javaLauncher.set(javaToolchains.launcherFor {
+ languageVersion.set(JavaLanguageVersion.of(18))
+ })
+
+ useJUnitPlatform()
+}
+
+tasks.register<Test>("testsOn19") {
+ javaLauncher.set(javaToolchains.launcherFor {
+ languageVersion.set(JavaLanguageVersion.of(19))
+ })
+
+ useJUnitPlatform()
}