summaryrefslogtreecommitdiff
path: root/buildSrc
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-07 13:34:51 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-05-07 13:34:51 +0200
commitefea162372be99beb4de90929629c7ebccdb8d84 (patch)
tree068a38613d29bdbd4fe39aee90fde86343c656f3 /buildSrc
parent324d7eccf5892a509dc76c7abcecf20fec09a877 (diff)
build: Access version catalog from buildSrc
This change adds a workaround to the build configuration so that we can access the version catalog from pre-compiled scripts in buildSrc. In this way, we can use the version catalog everywhere. This workaround is necessary until https://github.com/gradle/gradle/issues/15383 is fixed.
Diffstat (limited to 'buildSrc')
-rw-r--r--buildSrc/src/main/kotlin/Libs.kt (renamed from buildSrc/src/main/kotlin/Versions.kt)40
-rw-r--r--buildSrc/src/main/kotlin/ProjectExtensions.kt34
-rw-r--r--buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts9
-rw-r--r--buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts4
-rw-r--r--buildSrc/src/main/kotlin/testing-conventions.gradle.kts10
5 files changed, 30 insertions, 67 deletions
diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Libs.kt
index bb187a40..9567845a 100644
--- a/buildSrc/src/main/kotlin/Versions.kt
+++ b/buildSrc/src/main/kotlin/Libs.kt
@@ -24,41 +24,35 @@
import org.gradle.api.JavaVersion
import org.gradle.api.Project
-import org.gradle.kotlin.dsl.extra
+import org.gradle.api.artifacts.VersionCatalogsExtension
+import org.gradle.kotlin.dsl.getByType
import kotlin.properties.ReadOnlyProperty
/**
- * This class contains the versions of the dependencies shared by the different
- * subprojects.
+ * 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
*/
-public class Versions(private val project: Project) {
+@Suppress("UnstableApiUsage")
+public class Libs(project: Project) {
+ /**
+ * The version catalog of the project.
+ */
+ private val versionCatalog = project.extensions.getByType(VersionCatalogsExtension::class).named("libs")
+
/**
* A delegate for obtaining configuration values from a [Project] instance.
*/
- private fun version(name: String? = null): ReadOnlyProperty<Versions, String> =
+ private fun lib(name: String? = null): ReadOnlyProperty<Libs, String> =
ReadOnlyProperty { _, property -> get(name ?: property.name) }
- val junitJupiter by version(name = "junit-jupiter")
- val junitPlatform by version(name = "junit-platform")
- val mockk by version()
-
- val slf4j by version()
- val kotlinLogging by version(name = "kotlin-logging")
- val log4j by version()
- val config by version()
-
- val kotlinxCoroutines by version(name = "kotlinx-coroutines")
-
- val otelApi by version(name = "opentelemetry-api")
- val otelApiMetrics by version(name = "opentelemetry-api-metrics")
- val otelSdk by version(name = "opentelemetry-sdk")
- val otelSdkMetrics by version(name = "opentelemetry-sdk-metrics")
-
-
/**
* Obtain the version for the specified [dependency][name].
*/
- operator fun get(name: String) = project.extra.get("$name.version") as String
+ operator fun get(name: String): String {
+ val dep = versionCatalog.findDependency(name).get().get()
+ return "${dep.module.group}:${dep.module.name}:${dep.versionConstraint.displayName}"
+ }
companion object {
/**
diff --git a/buildSrc/src/main/kotlin/ProjectExtensions.kt b/buildSrc/src/main/kotlin/ProjectExtensions.kt
deleted file mode 100644
index ddf643f6..00000000
--- a/buildSrc/src/main/kotlin/ProjectExtensions.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2021 AtLarge Research
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-import org.gradle.api.Project
-import org.gradle.kotlin.dsl.extra
-import org.gradle.kotlin.dsl.provideDelegate
-
-/**
- * Obtain the [Versions] object for the specified [Project] instance.
- */
-val Project.versions: Versions
- get() {
- var versions: Versions? by rootProject.extra
- return versions ?: Versions(rootProject).also { versions = it }
- }
diff --git a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts
index 8623e8da..4e73d4d3 100644
--- a/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/benchmark-conventions.gradle.kts
@@ -55,13 +55,14 @@ benchmark {
}
}
+dependencies {
+ val libs = Libs(project)
+ implementation(libs["kotlinx-benchmark-runtime-jvm"])
+}
+
// Workaround for https://github.com/Kotlin/kotlinx-benchmark/issues/39
afterEvaluate {
tasks.named<org.gradle.jvm.tasks.Jar>("jmhBenchmarkJar") {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}
}
-
-dependencies {
- implementation("org.jetbrains.kotlinx:kotlinx-benchmark-runtime-jvm:0.3.0")
-}
diff --git a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
index 7bab52fc..703e9938 100644
--- a/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/kotlin-conventions.gradle.kts
@@ -34,11 +34,11 @@ repositories {
}
java {
- sourceCompatibility = Versions.jvmTarget
+ sourceCompatibility = Libs.jvmTarget
}
tasks.withType<KotlinCompile>().configureEach {
- kotlinOptions.jvmTarget = Versions.jvmTarget.toString()
+ kotlinOptions.jvmTarget = Libs.jvmTarget.toString()
kotlinOptions.useIR = true
kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
}
diff --git a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
index f129c282..7d344500 100644
--- a/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
+++ b/buildSrc/src/main/kotlin/testing-conventions.gradle.kts
@@ -34,8 +34,10 @@ tasks.test {
}
dependencies {
- testImplementation("org.junit.jupiter:junit-jupiter-api:${versions.junitJupiter}")
- testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${versions.junitJupiter}")
- testImplementation("org.junit.jupiter:junit-jupiter-params:${versions.junitJupiter}")
- testImplementation("io.mockk:mockk:${versions.mockk}")
+ val libs = Libs(project)
+
+ testImplementation(libs["junit-jupiter-api"])
+ testImplementation(libs["junit-jupiter-params"])
+ testImplementation(libs["mockk"])
+ testRuntimeOnly(libs["junit-jupiter-engine"])
}