From 9908a4db2ab78427bfe77427fc433b9cb51943d2 Mon Sep 17 00:00:00 2001 From: pvannierop Date: Wed, 25 Sep 2024 07:34:33 +0200 Subject: [PATCH 1/8] Add comments about version alignment in the project --- buildSrc/src/main/kotlin/Versions.kt | 2 ++ radar-commons-gradle/build.gradle.kts | 21 ++++++++++++------- .../org/radarbase/gradle/plugin/Versions.kt | 2 ++ 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 796f8d5..a14495f 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,3 +1,5 @@ +// IMPORTANT!! Any changes to this file will have to be copied to +// the Versions class in the radar-commons-gradle/build.gradle.kts file (see bottom). @Suppress("ConstPropertyName", "MemberVisibilityCanBePrivate") object Versions { const val project = "1.1.3-SNAPSHOT" diff --git a/radar-commons-gradle/build.gradle.kts b/radar-commons-gradle/build.gradle.kts index 00a0c5e..bd4b196 100644 --- a/radar-commons-gradle/build.gradle.kts +++ b/radar-commons-gradle/build.gradle.kts @@ -29,7 +29,9 @@ dependencies { implementation("com.github.ben-manes:gradle-versions-plugin:${Versions.gradleVersionsPlugin}") implementation("io.github.gradle-nexus:publish-plugin:${Versions.Plugins.publishPlugin}") implementation("org.jlleitschuh.gradle:ktlint-gradle:${Versions.ktlint}") - implementation("com.github.jk1.dependency-license-report:com.github.jk1.dependency-license-report.gradle.plugin:${Versions.Plugins.licenseReport}") + implementation( + "com.github.jk1.dependency-license-report:com.github.jk1.dependency-license-report.gradle.plugin:${Versions.Plugins.licenseReport}", + ) implementation("io.sentry.jvm.gradle:io.sentry.jvm.gradle.gradle.plugin:${Versions.sentry}") } @@ -70,7 +72,7 @@ tasks.withType { manifest { attributes( "Implementation-Title" to project.name, - "Implementation-Version" to project.version + "Implementation-Version" to project.version, ) } } @@ -136,13 +138,15 @@ publishing { } } -fun Project.propertyOrEnv(propertyName: String, envName: String): String? { - return if (hasProperty(propertyName)) { +fun Project.propertyOrEnv( + propertyName: String, + envName: String, +): String? = + if (hasProperty(propertyName)) { property(propertyName)?.toString() } else { System.getenv(envName) } -} nexusPublishing { this.repositories { @@ -173,8 +177,9 @@ tasks.withType { dependsOn(tasks.withType()) } -// Because this project is where all the required plugins get built, we need to add the dependencies separately here. -// They should be copied from the Versions.kt file directly to maintain consistency. +// Because this project is an 'includeBuild' project properties cannot be read from the gradle root project. +// All version declarations are added the dependencies separately. +// IMPORTANT!! The values here should be identical to from the buildSrc/Versions.kt file to maintain consistency. @Suppress("ConstPropertyName", "MemberVisibilityCanBePrivate") object Versions { const val project = "1.1.3-SNAPSHOT" @@ -193,7 +198,7 @@ object Versions { const val java = 17 const val slf4j = "2.0.13" const val confluent = "7.6.0" - const val kafka = "${confluent}-ce" + const val kafka = "$confluent-ce" const val avro = "1.12.0" const val jackson = "2.15.3" const val okhttp = "4.12.0" diff --git a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt index 40ae020..33e362f 100644 --- a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt +++ b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt @@ -1,5 +1,7 @@ package org.radarbase.gradle.plugin +// Versions are defined in this object because they cannot be read from the gradle project. +// IMPORTANT!! The versions in this file must be kept in sync with the versions. object Versions { const val wrapper = "8.3" const val kotlin = "1.9.10" From 1249e3fc1858344c394cdf866a61e468dd334e10 Mon Sep 17 00:00:00 2001 From: pvannierop Date: Wed, 25 Sep 2024 10:18:09 +0200 Subject: [PATCH 2/8] Version catalog of root project --- build.gradle.kts | 10 +-- gradle/libs.versions.toml | 71 +++++++++++++++++++ radar-commons-gradle/build.gradle.kts | 70 ++++-------------- .../gradle/libs.versions.toml | 52 ++++++++++++++ .../gradle/plugin/RadarRootProjectPlugin.kt | 2 +- .../org/radarbase/gradle/plugin/Versions.kt | 9 +-- radar-commons-kotlin/build.gradle.kts | 16 ++--- radar-commons-server/build.gradle.kts | 27 +++---- radar-commons-testing/build.gradle.kts | 30 ++++---- radar-commons/build.gradle.kts | 36 +++++----- 10 files changed, 199 insertions(+), 124 deletions(-) create mode 100644 gradle/libs.versions.toml create mode 100644 radar-commons-gradle/gradle/libs.versions.toml diff --git a/build.gradle.kts b/build.gradle.kts index 6b61096..58f633d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,13 +17,9 @@ import org.radarbase.gradle.plugin.radarPublishing * limitations under the License. */ plugins { - kotlin("plugin.serialization") version Versions.Plugins.kotlinSerialization apply false - kotlin("plugin.allopen") version Versions.Plugins.kotlinAllOpen apply false - id("com.github.davidmc24.gradle.plugin.avro") version Versions.Plugins.avro apply false + alias(libs.plugins.avro) apply false id("org.radarbase.radar-root-project") id("org.radarbase.radar-dependency-management") - id("org.radarbase.radar-kotlin") apply false - id("org.radarbase.radar-publishing") apply false } val githubRepoName = "RADAR-base/radar-commons" @@ -40,8 +36,8 @@ subprojects { apply(plugin = "org.radarbase.radar-publishing") dependencies { - configurations["testImplementation"]("org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.coroutines}") - configurations["testRuntimeOnly"]("org.slf4j:slf4j-simple:${Versions.slf4j}") + configurations["testImplementation"](rootProject.libs.coroutines.test) + configurations["testRuntimeOnly"](rootProject.libs.slf4j.simple) } radarPublishing { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..a1f82ac --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,71 @@ +# radar-commons-gradle/gradle/libs.versions.toml file. +[versions] + +# platform +java = "17" +kotlin = "1.9.21" +ktlint = "0.50.0" + +# libraries +coroutines = "1.7.3" +ktor = "2.3.4" +slf4j = "2.0.16" +confluent = "7.6.0" +kafka = "7.6.0-ce" +avro = "1.11.3" +jackson = "2.15.3" +okhttp = "4.12.0" +junit = "5.10.0" +mockito = "5.5.0" +mockitoKotlin = "5.1.0" +hamcrest = "2.2" +radarSchemas = "0.8.8" +opencsv = "5.8" +commonsCompress = "1.26.0" +snappy = "1.1.10.5" +guava = "32.1.1-jre" + +# gradle plugins +gradleVersionsPlugin = "0.50.0" +ktlintPlugin = "12.0.3" +licenseReportPlugin = "2.5" +dokkaPlugin = "1.9.10" +avroPlugin = "1.8.0" +nexusPublishPlugin = "2.0.0-rc-1" +sentryPlugin = "4.10.0" + +[libraries] +# Note: some gradle plugins are passed as API dependencies, hence appreance in the libraries section. +gradle-kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } +gradle-dokka = { group = "org.jetbrains.dokka", name = "dokka-gradle-plugin", version.ref = "dokkaPlugin" } +gradle-versions = { group = "com.github.ben-manes", name = "gradle-versions-plugin", version.ref = "gradleVersionsPlugin" } +gradle-nexus-publish = { group = "io.github.gradle-nexus", name = "publish-plugin", version.ref = "nexusPublishPlugin" } +gradle-ktlint = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlintPlugin" } +gradle-license-report = { group = "com.github.jk1.dependency-license-report", name = "com.github.jk1.dependency-license-report.gradle.plugin", version.ref = "licenseReportPlugin" } +gradle-sentry = { group = "io.sentry.jvm.gradle", name = "io.sentry.jvm.gradle.gradle.plugin", version.ref = "sentryPlugin" } +avro = { group = "org.apache.avro", name = "avro", version.ref = "avro" } +commons-compress = { group = "org.apache.commons", name = "commons-compress", version.ref = "commonsCompress" } +ktor-bom = { group = "io.ktor", name = "ktor-bom", version.ref = "ktor" } +coroutines-bom = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-bom", version.ref = "coroutines" } +coroutines-core = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-core", version.ref = "coroutines" } +coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "coroutines" } +jackson-bom = { group = "com.fasterxml.jackson", name = "jackson-bom", version.ref = "jackson" } +radar-schemas-commons = { group = "org.radarbase", name = "radar-schemas-commons", version.ref = "radarSchemas" } +mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockito" } +mockito-kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version.ref = "mockitoKotlin" } +mockwebserver = { group = "com.squareup.okhttp3", name = "mockwebserver", version.ref = "okhttp" } +hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" } +#kafka-clients = { group = "org.apache.kafka", name = "kafka-clients", version.ref = "kafka" } +snappy-java = { group = "org.xerial.snappy", name = "snappy-java", version.ref = "snappy" } +kafka-avro-serializer = { group = "io.confluent", name = "kafka-avro-serializer", version.ref = "confluent" } +guava = { group = "com.google.guava", name = "guava", version.ref = "guava" } +opencsv = { group = "com.opencsv", name = "opencsv", version.ref = "opencsv" } +slf4j-simple = { group = "org.slf4j", name = "slf4j-simple", version.ref = "slf4j" } + +[plugins] +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } +kotlin-allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" } +dokka = { id = "org.jetbrains.dokka", version.ref = "dokkaPlugin" } +nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin"} +avro = { id = "com.github.davidmc24.gradle.plugin.avro", version.ref = "avroPlugin" } diff --git a/radar-commons-gradle/build.gradle.kts b/radar-commons-gradle/build.gradle.kts index bd4b196..be53d7b 100644 --- a/radar-commons-gradle/build.gradle.kts +++ b/radar-commons-gradle/build.gradle.kts @@ -4,15 +4,14 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `kotlin-dsl` `java-gradle-plugin` - // Match to the versions in the bottom of this file - kotlin("jvm") version "1.9.24" `maven-publish` - id("io.github.gradle-nexus.publish-plugin") version "2.0.0" - id("org.jetbrains.dokka") version "1.9.10" signing + alias(libs.plugins.kotlin.jvm) + alias(libs.plugins.nexus.publish) + alias(libs.plugins.dokka) } -version = Versions.project +version = "1.1.3-SNAPSHOT" group = "org.radarbase" description = "RADAR-base common Gradle plugin setup" @@ -24,15 +23,13 @@ repositories { } dependencies { - implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.Plugins.kotlin}") - implementation("org.jetbrains.dokka:dokka-gradle-plugin:${Versions.Plugins.dokka}") - implementation("com.github.ben-manes:gradle-versions-plugin:${Versions.gradleVersionsPlugin}") - implementation("io.github.gradle-nexus:publish-plugin:${Versions.Plugins.publishPlugin}") - implementation("org.jlleitschuh.gradle:ktlint-gradle:${Versions.ktlint}") - implementation( - "com.github.jk1.dependency-license-report:com.github.jk1.dependency-license-report.gradle.plugin:${Versions.Plugins.licenseReport}", - ) - implementation("io.sentry.jvm.gradle:io.sentry.jvm.gradle.gradle.plugin:${Versions.sentry}") + implementation(libs.gradle.kotlin) + implementation(libs.gradle.dokka) + implementation(libs.gradle.versions) + implementation(libs.gradle.nexus.publish) + implementation(libs.gradle.ktlint) + implementation(libs.gradle.sentry) + implementation(libs.gradle.license.report) } gradlePlugin { @@ -57,12 +54,12 @@ gradlePlugin { } tasks.withType { - options.release.set(Versions.java) + options.release.set(libs.versions.java.get().toIntOrNull()) } tasks.withType { compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) + jvmTarget.set(JvmTarget.fromTarget(libs.versions.java.get())) languageVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) } @@ -176,44 +173,3 @@ tasks.withType { tasks.withType { dependsOn(tasks.withType()) } - -// Because this project is an 'includeBuild' project properties cannot be read from the gradle root project. -// All version declarations are added the dependencies separately. -// IMPORTANT!! The values here should be identical to from the buildSrc/Versions.kt file to maintain consistency. -@Suppress("ConstPropertyName", "MemberVisibilityCanBePrivate") -object Versions { - const val project = "1.1.3-SNAPSHOT" - - object Plugins { - const val licenseReport = "2.5" - const val kotlin = "1.9.21" - const val dokka = "1.9.10" - const val kotlinSerialization = kotlin - const val kotlinAllOpen = kotlin - const val avro = "1.8.0" - const val gradle = "8.3" - const val publishPlugin = "2.0.0-rc-1" - } - - const val java = 17 - const val slf4j = "2.0.13" - const val confluent = "7.6.0" - const val kafka = "$confluent-ce" - const val avro = "1.12.0" - const val jackson = "2.15.3" - const val okhttp = "4.12.0" - const val junit = "5.10.0" - const val mockito = "5.5.0" - const val mockitoKotlin = "5.1.0" - const val hamcrest = "2.2" - const val radarSchemas = "0.8.8" - const val opencsv = "5.8" - const val ktor = "2.3.4" - const val coroutines = "1.7.3" - const val commonsCompress = "1.26.0" - const val snappy = "1.1.10.5" - const val guava = "32.1.1-jre" - const val gradleVersionsPlugin = "0.50.0" - const val ktlint = "12.0.3" - const val sentry = "4.10.0" -} diff --git a/radar-commons-gradle/gradle/libs.versions.toml b/radar-commons-gradle/gradle/libs.versions.toml new file mode 100644 index 0000000..dcfab72 --- /dev/null +++ b/radar-commons-gradle/gradle/libs.versions.toml @@ -0,0 +1,52 @@ +# Because this project is not part of the root project build (it is an 'includeBuild') it cannot make use of the versions +# management of the root project. As a result, it needs to define its own versions file. The versions in the '[versions]' +# section in this file should be kept in sync with the gradle/libs.versions.toml file of the root project. +[versions] + +# platform +java = "17" +kotlin = "1.9.21" +ktlint = "0.50.0" + +# libraries +coroutines = "1.7.3" +ktor = "2.3.4" +slf4j = "2.0.16" +confluent = "7.6.0" +kafka = "7.6.0-ce" +avro = "1.11.3" +jackson = "2.15.3" +okhttp = "4.12.0" +junit = "5.10.0" +mockito = "5.5.0" +mockitoKotlin = "5.1.0" +hamcrest = "2.2" +radarSchemas = "0.8.8" +opencsv = "5.8" +commonsCompress = "1.26.0" +snappy = "1.1.10.5" +guava = "32.1.1-jre" + +# gradle plugins +gradleVersionsPlugin = "0.50.0" +ktlintPlugin = "12.0.3" +licenseReportPlugin = "2.5" +dokkaPlugin = "1.9.10" +avroPlugin = "1.8.0" +nexusPublishPlugin = "2.0.0-rc-1" +sentryPlugin = "4.10.0" + +[libraries] +# Note: some gradle plugins are passed as API dependencies, not as plugins. Hence the duplication. +gradle-kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } +gradle-dokka = { group = "org.jetbrains.dokka", name = "dokka-gradle-plugin", version.ref = "dokkaPlugin" } +gradle-versions = { group = "com.github.ben-manes", name = "gradle-versions-plugin", version.ref = "gradleVersionsPlugin" } +gradle-nexus-publish = { group = "io.github.gradle-nexus", name = "publish-plugin", version.ref = "nexusPublishPlugin" } +gradle-ktlint = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlintPlugin" } +gradle-license-report = { group = "com.github.jk1.dependency-license-report", name = "com.github.jk1.dependency-license-report.gradle.plugin", version.ref = "licenseReportPlugin" } +gradle-sentry = { group = "io.sentry.jvm.gradle", name = "io.sentry.jvm.gradle.gradle.plugin", version.ref = "sentryPlugin" } + +[plugins] +nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin"} +dokka = { id = "org.jetbrains.dokka", version.ref = "dokkaPlugin" } +kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/RadarRootProjectPlugin.kt b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/RadarRootProjectPlugin.kt index e83edc8..3346809 100644 --- a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/RadarRootProjectPlugin.kt +++ b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/RadarRootProjectPlugin.kt @@ -25,7 +25,7 @@ class RadarRootProjectPlugin : Plugin { override fun apply(project: Project) = with(project) { val extension = extensions.create("radarRootProject").apply { group.convention("org.radarbase") - gradleVersion.convention(Versions.wrapper) + gradleVersion.convention(Versions.gradle) } allprojects { diff --git a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt index 33e362f..14bfaa8 100644 --- a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt +++ b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt @@ -2,11 +2,12 @@ package org.radarbase.gradle.plugin // Versions are defined in this object because they cannot be read from the gradle project. // IMPORTANT!! The versions in this file must be kept in sync with the versions. +@Suppress("ktlint:standard:property-naming") object Versions { - const val wrapper = "8.3" - const val kotlin = "1.9.10" - const val ktlint = "0.50.0" - const val java = 11 + const val gradle = "8.7" + const val java = 17 + const val kotlin = "1.9.21" + const val ktlint = "0.50.0" // Ruleset version const val junit = "5.10.0" const val slf4j = "2.0.16" } diff --git a/radar-commons-kotlin/build.gradle.kts b/radar-commons-kotlin/build.gradle.kts index 0ef365a..12a4ef5 100644 --- a/radar-commons-kotlin/build.gradle.kts +++ b/radar-commons-kotlin/build.gradle.kts @@ -1,17 +1,17 @@ plugins { - kotlin("plugin.serialization") + alias(libs.plugins.kotlin.serialization) } description = "Library for Kotlin utility classes and functions" dependencies { - api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:${Versions.coroutines}")) - api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}") + api(platform(libs.coroutines.bom)) + api("org.jetbrains.kotlinx:kotlinx-coroutines-core") - api(platform("io.ktor:ktor-bom:${Versions.ktor}")) - api("io.ktor:ktor-client-auth:${Versions.ktor}") - implementation("io.ktor:ktor-client-content-negotiation:${Versions.ktor}") - implementation("io.ktor:ktor-serialization-kotlinx-json:${Versions.ktor}") + api(platform(libs.ktor.bom)) + api("io.ktor:ktor-client-auth") + implementation("io.ktor:ktor-client-content-negotiation") + implementation("io.ktor:ktor-serialization-kotlinx-json") - testImplementation("org.hamcrest:hamcrest:${Versions.hamcrest}") + testImplementation(libs.hamcrest) } diff --git a/radar-commons-server/build.gradle.kts b/radar-commons-server/build.gradle.kts index 05ef72b..17774e4 100644 --- a/radar-commons-server/build.gradle.kts +++ b/radar-commons-server/build.gradle.kts @@ -15,8 +15,8 @@ */ plugins { - id("com.github.davidmc24.gradle.plugin.avro") - kotlin("plugin.allopen") + alias(libs.plugins.kotlin.allopen) + alias(libs.plugins.avro) } description = "RADAR Common server library utilities." @@ -35,25 +35,26 @@ dependencies { api(project(":radar-commons")) // For POJO classes and ConfigLoader - implementation(platform("com.fasterxml.jackson:jackson-bom:${Versions.jackson}")) - implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${Versions.jackson}") - implementation("com.fasterxml.jackson.core:jackson-databind:${Versions.jackson}") + implementation(platform(libs.jackson.bom)) + implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml") + implementation("com.fasterxml.jackson.core:jackson-databind") - api("org.apache.avro:avro:${Versions.avro}") { - implementation("org.apache.commons:commons-compress:${Versions.commonsCompress}") + api(libs.avro) { + implementation(libs.commons.compress) } + // Somehow, using version catalog for kafka-clients does not work (throws task error). implementation("org.apache.kafka:kafka-clients:${Versions.kafka}") { - implementation("org.xerial.snappy:snappy-java:${Versions.snappy}") + implementation(libs.snappy.java) } - testImplementation("org.mockito:mockito-core:${Versions.mockito}") - // Direct producer uses KafkaAvroSerializer if initialized + testImplementation(libs.mockito.core) - implementation("io.confluent:kafka-avro-serializer:${Versions.confluent}") { - runtimeOnly("com.google.guava:guava:${Versions.guava}") + // Direct producer uses KafkaAvroSerializer if initialized + implementation(libs.kafka.avro.serializer) { + runtimeOnly(libs.guava) } - testImplementation("org.radarbase:radar-schemas-commons:${Versions.radarSchemas}") + testImplementation(libs.radar.schemas.commons) } allOpen { diff --git a/radar-commons-testing/build.gradle.kts b/radar-commons-testing/build.gradle.kts index 5f64e64..1ea4690 100644 --- a/radar-commons-testing/build.gradle.kts +++ b/radar-commons-testing/build.gradle.kts @@ -40,29 +40,27 @@ dependencies { api(project(":radar-commons-server")) api(project(":radar-commons-kotlin")) - api("org.radarbase:radar-schemas-commons:${Versions.radarSchemas}") + api(libs.radar.schemas.commons) - implementation("com.opencsv:opencsv:${Versions.opencsv}") - implementation(platform("com.fasterxml.jackson:jackson-bom:${Versions.jackson}")) - implementation("com.fasterxml.jackson.core:jackson-databind:${Versions.jackson}") + implementation(libs.opencsv) + implementation(platform(libs.jackson.bom)) + implementation("com.fasterxml.jackson.core:jackson-databind") + // Somehow, using version catalog for kafka-clients does not work (throws task error). implementation("org.apache.kafka:kafka-clients:${Versions.kafka}") { - implementation("org.xerial.snappy:snappy-java:${Versions.snappy}") + implementation(libs.snappy.java) } + implementation(libs.kafka.avro.serializer) - implementation("io.confluent:kafka-avro-serializer:${Versions.confluent}") { - runtimeOnly("com.google.guava:guava:${Versions.guava}") + api(libs.avro) { + implementation(libs.commons.compress) } - api("org.apache.avro:avro:${Versions.avro}") { - implementation("org.apache.commons:commons-compress:${Versions.commonsCompress}") - } - - implementation(platform("io.ktor:ktor-bom:${Versions.ktor}")) - implementation("io.ktor:ktor-serialization-kotlinx-json:${Versions.ktor}") + implementation(platform(libs.ktor.bom)) + implementation("io.ktor:ktor-serialization-kotlinx-json") - applicationRuntimeOnly("org.slf4j:slf4j-simple:${Versions.slf4j}") + applicationRuntimeOnly(libs.slf4j.simple) - testImplementation("org.hamcrest:hamcrest:${Versions.hamcrest}") - testImplementation("org.mockito:mockito-core:${Versions.mockito}") + testImplementation(libs.hamcrest) + testImplementation(libs.mockito.core) } diff --git a/radar-commons/build.gradle.kts b/radar-commons/build.gradle.kts index b5a5581..f3b39ac 100644 --- a/radar-commons/build.gradle.kts +++ b/radar-commons/build.gradle.kts @@ -1,6 +1,6 @@ plugins { - kotlin("plugin.serialization") - kotlin("plugin.allopen") + alias(libs.plugins.kotlin.serialization) + alias(libs.plugins.kotlin.allopen) } description = "RADAR Common utilities library." @@ -16,28 +16,28 @@ repositories { // In this section you declare the dependencies for your production and test code dependencies { - api("org.apache.avro:avro:${Versions.avro}") { - implementation("org.apache.commons:commons-compress:${Versions.commonsCompress}") + + api(libs.avro) { + implementation(libs.commons.compress) } api(kotlin("reflect")) + api(platform(libs.ktor.bom)) + api("io.ktor:ktor-client-core") + api("io.ktor:ktor-client-cio") + api("io.ktor:ktor-client-auth") + api(libs.coroutines.core) implementation(project(":radar-commons-kotlin")) + implementation("io.ktor:ktor-client-content-negotiation") + implementation("io.ktor:ktor-serialization-kotlinx-json") - api(platform("io.ktor:ktor-bom:${Versions.ktor}")) - api("io.ktor:ktor-client-core:${Versions.ktor}") - api("io.ktor:ktor-client-cio:${Versions.ktor}") - api("io.ktor:ktor-client-auth:${Versions.ktor}") - implementation("io.ktor:ktor-client-content-negotiation:${Versions.ktor}") - implementation("io.ktor:ktor-serialization-kotlinx-json:${Versions.ktor}") - - api("org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}") - - testImplementation(platform("com.fasterxml.jackson:jackson-bom:${Versions.jackson}")) + testImplementation(platform(libs.jackson.bom)) testImplementation("com.fasterxml.jackson.core:jackson-databind") - testImplementation("org.radarbase:radar-schemas-commons:${Versions.radarSchemas}") - testImplementation("org.mockito:mockito-core:${Versions.mockito}") - testImplementation("org.mockito.kotlin:mockito-kotlin:${Versions.mockitoKotlin}") - testImplementation("com.squareup.okhttp3:mockwebserver:${Versions.okhttp}") + + testImplementation(libs.radar.schemas.commons) + testImplementation(libs.mockito.core) + testImplementation(libs.mockito.kotlin) + testImplementation(libs.mockwebserver) } allOpen { From 882ef0f1793b2767e7b3b5490734d7db9bfbc0e4 Mon Sep 17 00:00:00 2001 From: pvannierop Date: Wed, 25 Sep 2024 10:33:21 +0200 Subject: [PATCH 3/8] Move project version to gradle.properties file --- build.gradle.kts | 10 ++-------- gradle.properties | 3 +++ radar-commons-gradle/build.gradle.kts | 2 +- radar-commons-gradle/gradle.properties | 1 + 4 files changed, 7 insertions(+), 9 deletions(-) create mode 100644 radar-commons-gradle/gradle.properties diff --git a/build.gradle.kts b/build.gradle.kts index 58f633d..8396c24 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,8 +26,8 @@ val githubRepoName = "RADAR-base/radar-commons" val githubUrl = "https://github.com/$githubRepoName" radarRootProject { - projectVersion.set(Versions.project) - gradleVersion.set(Versions.Plugins.gradle) + projectVersion.set(properties["projectVersion"] as String) + gradleVersion.set(properties["gradleVersion"] as String) } subprojects { @@ -58,10 +58,4 @@ subprojects { } } - radarKotlin { - javaVersion.set(Versions.java) - kotlinVersion.set(Versions.Plugins.kotlin) - junitVersion.set(Versions.junit) - slf4jVersion.set(Versions.slf4j) - } } diff --git a/gradle.properties b/gradle.properties index 821e127..c07d66a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,4 @@ +projectVersion=1.1.3-SNAPSHOT +gradleVersion=8.7 + org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 diff --git a/radar-commons-gradle/build.gradle.kts b/radar-commons-gradle/build.gradle.kts index be53d7b..5dbcdd8 100644 --- a/radar-commons-gradle/build.gradle.kts +++ b/radar-commons-gradle/build.gradle.kts @@ -11,7 +11,7 @@ plugins { alias(libs.plugins.dokka) } -version = "1.1.3-SNAPSHOT" +version = properties["projectVersion"] as String group = "org.radarbase" description = "RADAR-base common Gradle plugin setup" diff --git a/radar-commons-gradle/gradle.properties b/radar-commons-gradle/gradle.properties new file mode 100644 index 0000000..09bc35d --- /dev/null +++ b/radar-commons-gradle/gradle.properties @@ -0,0 +1 @@ +projectVersion=1.1.3-SNAPSHOT From 23dee04ce95468ea4f684630305c2c89a861f105 Mon Sep 17 00:00:00 2001 From: pvannierop Date: Wed, 25 Sep 2024 10:33:42 +0200 Subject: [PATCH 4/8] Remove redundant line --- gradle/libs.versions.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a1f82ac..d2e1d37 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -55,7 +55,6 @@ mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mo mockito-kotlin = { group = "org.mockito.kotlin", name = "mockito-kotlin", version.ref = "mockitoKotlin" } mockwebserver = { group = "com.squareup.okhttp3", name = "mockwebserver", version.ref = "okhttp" } hamcrest = { group = "org.hamcrest", name = "hamcrest", version.ref = "hamcrest" } -#kafka-clients = { group = "org.apache.kafka", name = "kafka-clients", version.ref = "kafka" } snappy-java = { group = "org.xerial.snappy", name = "snappy-java", version.ref = "snappy" } kafka-avro-serializer = { group = "io.confluent", name = "kafka-avro-serializer", version.ref = "confluent" } guava = { group = "com.google.guava", name = "guava", version.ref = "guava" } From 182c166bb16c797615d25d3789e7399e3b6f3c3d Mon Sep 17 00:00:00 2001 From: pvannierop Date: Wed, 25 Sep 2024 10:34:22 +0200 Subject: [PATCH 5/8] Remove buildSrc/Versions.kt file --- buildSrc/build.gradle.kts | 23 ---------------- buildSrc/src/main/kotlin/Versions.kt | 38 -------------------------- radar-commons-server/build.gradle.kts | 2 +- radar-commons-testing/build.gradle.kts | 2 +- 4 files changed, 2 insertions(+), 63 deletions(-) delete mode 100644 buildSrc/build.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/Versions.kt diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts deleted file mode 100644 index d4f14b3..0000000 --- a/buildSrc/build.gradle.kts +++ /dev/null @@ -1,23 +0,0 @@ -import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - -plugins { - `kotlin-dsl` -} - -repositories { - mavenCentral() -} - -tasks.withType { - sourceCompatibility = "17" - targetCompatibility = "17" -} - -tasks.withType { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) - languageVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) - apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) - } -} diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt deleted file mode 100644 index a14495f..0000000 --- a/buildSrc/src/main/kotlin/Versions.kt +++ /dev/null @@ -1,38 +0,0 @@ -// IMPORTANT!! Any changes to this file will have to be copied to -// the Versions class in the radar-commons-gradle/build.gradle.kts file (see bottom). -@Suppress("ConstPropertyName", "MemberVisibilityCanBePrivate") -object Versions { - const val project = "1.1.3-SNAPSHOT" - - object Plugins { - const val licenseReport = "2.5" - const val kotlin = "1.9.21" - const val dokka = "1.9.10" - const val kotlinSerialization = kotlin - const val kotlinAllOpen = kotlin - const val avro = "1.8.0" - const val gradle = "8.3" - const val publishPlugin = "2.0.0-rc-1" - } - - const val java = 17 - const val slf4j = "2.0.13" - const val confluent = "7.6.0" - const val kafka = "${confluent}-ce" - const val avro = "1.12.0" - const val jackson = "2.15.3" - const val okhttp = "4.12.0" - const val junit = "5.10.0" - const val mockito = "5.5.0" - const val mockitoKotlin = "5.1.0" - const val hamcrest = "2.2" - const val radarSchemas = "0.8.8" - const val opencsv = "5.8" - const val ktor = "2.3.4" - const val coroutines = "1.7.3" - const val commonsCompress = "1.26.0" - const val snappy = "1.1.10.5" - const val guava = "32.1.1-jre" - const val gradleVersionsPlugin = "0.50.0" - const val ktlint = "12.0.3" -} diff --git a/radar-commons-server/build.gradle.kts b/radar-commons-server/build.gradle.kts index 17774e4..cb6eaf3 100644 --- a/radar-commons-server/build.gradle.kts +++ b/radar-commons-server/build.gradle.kts @@ -44,7 +44,7 @@ dependencies { } // Somehow, using version catalog for kafka-clients does not work (throws task error). - implementation("org.apache.kafka:kafka-clients:${Versions.kafka}") { + implementation("org.apache.kafka:kafka-clients:${libs.versions.kafka}") { implementation(libs.snappy.java) } diff --git a/radar-commons-testing/build.gradle.kts b/radar-commons-testing/build.gradle.kts index 1ea4690..4c317a2 100644 --- a/radar-commons-testing/build.gradle.kts +++ b/radar-commons-testing/build.gradle.kts @@ -47,7 +47,7 @@ dependencies { implementation("com.fasterxml.jackson.core:jackson-databind") // Somehow, using version catalog for kafka-clients does not work (throws task error). - implementation("org.apache.kafka:kafka-clients:${Versions.kafka}") { + implementation("org.apache.kafka:kafka-clients:${libs.versions.kafka}") { implementation(libs.snappy.java) } implementation(libs.kafka.avro.serializer) From 631ec5b8e03b2b83287b8e28eb2bf2e25d152b5a Mon Sep 17 00:00:00 2001 From: pvannierop Date: Wed, 25 Sep 2024 10:56:14 +0200 Subject: [PATCH 6/8] Simplify procedure for version updates Add comments on what files to keep in sync. I moved the gradle dependency version to the version catalog; may be debated, but adds QOL. --- build.gradle.kts | 2 +- gradle.properties | 2 +- gradle/libs.versions.toml | 6 +++++- radar-commons-gradle/gradle/libs.versions.toml | 8 ++++++-- .../main/kotlin/org/radarbase/gradle/plugin/Versions.kt | 9 +++++++-- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8396c24..1fcfa19 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,7 +27,7 @@ val githubUrl = "https://github.com/$githubRepoName" radarRootProject { projectVersion.set(properties["projectVersion"] as String) - gradleVersion.set(properties["gradleVersion"] as String) + gradleVersion.set(libs.versions.gradle) } subprojects { diff --git a/gradle.properties b/gradle.properties index c07d66a..3ffa1ac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ +# IMPORTANT!! Also set projectVersion in radar-commons-gradle/gradle.properties projectVersion=1.1.3-SNAPSHOT -gradleVersion=8.7 org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d2e1d37..080d57e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,8 +1,12 @@ -# radar-commons-gradle/gradle/libs.versions.toml file. +# IMPORTANT!! The versions in the following files must be kept in sync: +# - gradle/libs.versions.toml +# - radar-commons-gradle/gradle/libs.versions.toml +# - radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt [versions] # platform java = "17" +gradle = "8.7" kotlin = "1.9.21" ktlint = "0.50.0" diff --git a/radar-commons-gradle/gradle/libs.versions.toml b/radar-commons-gradle/gradle/libs.versions.toml index dcfab72..8290d0c 100644 --- a/radar-commons-gradle/gradle/libs.versions.toml +++ b/radar-commons-gradle/gradle/libs.versions.toml @@ -1,10 +1,14 @@ # Because this project is not part of the root project build (it is an 'includeBuild') it cannot make use of the versions -# management of the root project. As a result, it needs to define its own versions file. The versions in the '[versions]' -# section in this file should be kept in sync with the gradle/libs.versions.toml file of the root project. +# management of the root project. As a result, it needs to define its own versions file. +# IMPORTANT!! The versions in the following files must be kept in sync: +# - gradle/libs.versions.toml +# - radar-commons-gradle/gradle/libs.versions.toml +# - radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt [versions] # platform java = "17" +gradle = "8.7" kotlin = "1.9.21" ktlint = "0.50.0" diff --git a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt index 14bfaa8..e91a10a 100644 --- a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt +++ b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt @@ -1,7 +1,12 @@ package org.radarbase.gradle.plugin -// Versions are defined in this object because they cannot be read from the gradle project. -// IMPORTANT!! The versions in this file must be kept in sync with the versions. +/* + Versions are defined in this object because they cannot be read from the gradle project. + IMPORTANT!! The versions in the following files must be kept in sync: + - gradle/libs.versions.toml + - radar-commons-gradle/gradle/libs.versions.toml + - radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt +*/ @Suppress("ktlint:standard:property-naming") object Versions { const val gradle = "8.7" From 99efcc74c02e6c55107d68e7a525c8b894f4c29a Mon Sep 17 00:00:00 2001 From: pvannierop Date: Thu, 26 Sep 2024 10:09:14 +0200 Subject: [PATCH 7/8] Configure radar-commons-gradle to use the version catalog of the root project --- gradle/libs.versions.toml | 1 - radar-commons-gradle/gradle.properties | 1 + .../gradle/libs.versions.toml | 56 ------------------- radar-commons-gradle/settings.gradle.kts | 8 +++ .../org/radarbase/gradle/plugin/Versions.kt | 1 - 5 files changed, 9 insertions(+), 58 deletions(-) delete mode 100644 radar-commons-gradle/gradle/libs.versions.toml create mode 100644 radar-commons-gradle/settings.gradle.kts diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 080d57e..c07cc66 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,5 @@ # IMPORTANT!! The versions in the following files must be kept in sync: # - gradle/libs.versions.toml -# - radar-commons-gradle/gradle/libs.versions.toml # - radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt [versions] diff --git a/radar-commons-gradle/gradle.properties b/radar-commons-gradle/gradle.properties index 09bc35d..b5b9dda 100644 --- a/radar-commons-gradle/gradle.properties +++ b/radar-commons-gradle/gradle.properties @@ -1 +1,2 @@ +# IMPORTANT!! Also set projectVersion in gradle.properties of the root project. projectVersion=1.1.3-SNAPSHOT diff --git a/radar-commons-gradle/gradle/libs.versions.toml b/radar-commons-gradle/gradle/libs.versions.toml deleted file mode 100644 index 8290d0c..0000000 --- a/radar-commons-gradle/gradle/libs.versions.toml +++ /dev/null @@ -1,56 +0,0 @@ -# Because this project is not part of the root project build (it is an 'includeBuild') it cannot make use of the versions -# management of the root project. As a result, it needs to define its own versions file. -# IMPORTANT!! The versions in the following files must be kept in sync: -# - gradle/libs.versions.toml -# - radar-commons-gradle/gradle/libs.versions.toml -# - radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt -[versions] - -# platform -java = "17" -gradle = "8.7" -kotlin = "1.9.21" -ktlint = "0.50.0" - -# libraries -coroutines = "1.7.3" -ktor = "2.3.4" -slf4j = "2.0.16" -confluent = "7.6.0" -kafka = "7.6.0-ce" -avro = "1.11.3" -jackson = "2.15.3" -okhttp = "4.12.0" -junit = "5.10.0" -mockito = "5.5.0" -mockitoKotlin = "5.1.0" -hamcrest = "2.2" -radarSchemas = "0.8.8" -opencsv = "5.8" -commonsCompress = "1.26.0" -snappy = "1.1.10.5" -guava = "32.1.1-jre" - -# gradle plugins -gradleVersionsPlugin = "0.50.0" -ktlintPlugin = "12.0.3" -licenseReportPlugin = "2.5" -dokkaPlugin = "1.9.10" -avroPlugin = "1.8.0" -nexusPublishPlugin = "2.0.0-rc-1" -sentryPlugin = "4.10.0" - -[libraries] -# Note: some gradle plugins are passed as API dependencies, not as plugins. Hence the duplication. -gradle-kotlin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" } -gradle-dokka = { group = "org.jetbrains.dokka", name = "dokka-gradle-plugin", version.ref = "dokkaPlugin" } -gradle-versions = { group = "com.github.ben-manes", name = "gradle-versions-plugin", version.ref = "gradleVersionsPlugin" } -gradle-nexus-publish = { group = "io.github.gradle-nexus", name = "publish-plugin", version.ref = "nexusPublishPlugin" } -gradle-ktlint = { group = "org.jlleitschuh.gradle", name = "ktlint-gradle", version.ref = "ktlintPlugin" } -gradle-license-report = { group = "com.github.jk1.dependency-license-report", name = "com.github.jk1.dependency-license-report.gradle.plugin", version.ref = "licenseReportPlugin" } -gradle-sentry = { group = "io.sentry.jvm.gradle", name = "io.sentry.jvm.gradle.gradle.plugin", version.ref = "sentryPlugin" } - -[plugins] -nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexusPublishPlugin"} -dokka = { id = "org.jetbrains.dokka", version.ref = "dokkaPlugin" } -kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } diff --git a/radar-commons-gradle/settings.gradle.kts b/radar-commons-gradle/settings.gradle.kts new file mode 100644 index 0000000..ccee71b --- /dev/null +++ b/radar-commons-gradle/settings.gradle.kts @@ -0,0 +1,8 @@ +// Allows to use the root project version catalog in the includeBuild module +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} diff --git a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt index e91a10a..62887c9 100644 --- a/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt +++ b/radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt @@ -4,7 +4,6 @@ package org.radarbase.gradle.plugin Versions are defined in this object because they cannot be read from the gradle project. IMPORTANT!! The versions in the following files must be kept in sync: - gradle/libs.versions.toml - - radar-commons-gradle/gradle/libs.versions.toml - radar-commons-gradle/src/main/kotlin/org/radarbase/gradle/plugin/Versions.kt */ @Suppress("ktlint:standard:property-naming") From a39d961a3a3dd95ff41b4af4cd142a0c6fc270b6 Mon Sep 17 00:00:00 2001 From: pvannierop Date: Thu, 26 Sep 2024 10:15:18 +0200 Subject: [PATCH 8/8] Fix avro dependency version --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c07cc66..1a2721c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ ktor = "2.3.4" slf4j = "2.0.16" confluent = "7.6.0" kafka = "7.6.0-ce" -avro = "1.11.3" +avro = "1.12.0" jackson = "2.15.3" okhttp = "4.12.0" junit = "5.10.0"