diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 0bd1d9dc2b..7be402da6f 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -255,6 +255,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 31f80aec85..5358548ef6 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,3 @@
-
@@ -41,4 +40,4 @@
-
+
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 98ff9c2e95..d50ab3d384 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -89,7 +89,7 @@ spinePublishing {
gitHub("compiler")
)}
- artifactPrefix = "compiler-"
+ toolArtifactPrefix = "compiler-"
}
allprojects {
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
index 227e6d2625..2127407716 100644
--- a/buildSrc/build.gradle.kts
+++ b/buildSrc/build.gradle.kts
@@ -65,7 +65,12 @@ val jacksonVersion = "2.18.3"
*/
val googleAuthToolVersion = "2.1.5"
-val licenseReportVersion = "2.7"
+/**
+ * Generates reports about the licenses of the dependencies for a Gradle project.
+ *
+ * https://github.com/jk1/Gradle-License-Report
+ */
+val licenseReportVersion = "3.1.2"
val grGitVersion = "4.1.1"
@@ -141,6 +146,20 @@ val koverVersion = "0.9.1"
*/
val shadowVersion = "9.2.2"
+/**
+ * The version of JUnit used to test the build scripts.
+ *
+ * @see [io.spine.dependency.test.JUnit]
+ */
+val junitVersion = "6.0.3"
+
+/**
+ * The version of Kotest used to test the build scripts.
+ *
+ * @see [io.spine.dependency.test.Kotest]
+ */
+val kotestVersion = "6.1.10"
+
configurations.all {
resolutionStrategy {
force(
@@ -192,6 +211,15 @@ dependencies {
).forEach {
implementation(it)
}
+
+ testImplementation(platform("org.junit:junit-bom:$junitVersion"))
+ testImplementation("org.junit.jupiter:junit-jupiter")
+ testImplementation("io.kotest:kotest-assertions-core:$kotestVersion")
+ testRuntimeOnly("org.junit.platform:junit-platform-launcher")
+}
+
+tasks.test {
+ useJUnitPlatform()
}
dependOnBuildSrcJar()
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/build/Dokka.kt b/buildSrc/src/main/kotlin/io/spine/dependency/build/Dokka.kt
index ba0433aaf0..9ba3cdc566 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/build/Dokka.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/build/Dokka.kt
@@ -35,7 +35,7 @@ object Dokka {
* When changing the version, also change the version used in the
* `buildSrc/build.gradle.kts`.
*/
- const val version = "2.1.0"
+ const val version = "2.2.0"
object GradlePlugin {
const val id = "org.jetbrains.dokka"
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/build/LicenseReport.kt b/buildSrc/src/main/kotlin/io/spine/dependency/build/LicenseReport.kt
deleted file mode 100644
index 826f86853a..0000000000
--- a/buildSrc/src/main/kotlin/io/spine/dependency/build/LicenseReport.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright 2025, TeamDev. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Redistribution and use in source and/or binary forms, with or without
- * modification, must retain the above copyright notice and the following
- * disclaimer.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package io.spine.dependency.build
-
-// https://github.com/jk1/Gradle-License-Report
-@Suppress("unused")
-object LicenseReport {
- private const val version = "3.0.1"
- const val lib = "com.github.jk1:gradle-license-report:$version"
-
- object GradlePlugin {
- const val version = LicenseReport.version
- const val id = "com.github.jk1.dependency-license-report"
- const val lib = LicenseReport.lib
- }
-}
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt
index b999a75d2c..463cbf2b1f 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/Base.kt
@@ -33,8 +33,8 @@ package io.spine.dependency.local
*/
@Suppress("ConstPropertyName", "unused")
object Base {
- const val version = "2.0.0-SNAPSHOT.386"
- const val versionForBuildScript = "2.0.0-SNAPSHOT.386"
+ const val version = "2.0.0-SNAPSHOT.387"
+ const val versionForBuildScript = "2.0.0-SNAPSHOT.387"
const val group = Spine.group
private const val prefix = "spine"
const val libModule = "$prefix-base"
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt
index 396e94c42d..31cbfb3fac 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/Compiler.kt
@@ -72,7 +72,7 @@ object Compiler : Dependency() {
* The version of the Compiler dependencies.
*/
override val version: String
- private const val fallbackVersion = "2.0.0-SNAPSHOT.040"
+ private const val fallbackVersion = "2.0.0-SNAPSHOT.041"
/**
* The distinct version of the Compiler used by other build tools.
@@ -81,7 +81,7 @@ object Compiler : Dependency() {
* transitive dependencies, this is the version used to build the project itself.
*/
val dogfoodingVersion: String
- private const val fallbackDfVersion = "2.0.0-SNAPSHOT.039"
+ private const val fallbackDfVersion = "2.0.0-SNAPSHOT.041"
/**
* The artifact for the Compiler Gradle plugin.
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt
index 49df6fbe10..2e0b6973b5 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvm.kt
@@ -39,7 +39,7 @@ typealias CoreJava = CoreJvm
@Suppress("ConstPropertyName", "unused")
object CoreJvm {
const val group = Spine.group
- const val version = "2.0.0-SNAPSHOT.371"
+ const val version = "2.0.0-SNAPSHOT.372"
const val coreArtifact = "spine-core"
const val clientArtifact = "spine-client"
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt
index 0b545b1e03..344e8a13fc 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/CoreJvmCompiler.kt
@@ -46,12 +46,12 @@ object CoreJvmCompiler {
/**
* The version used to in the build classpath.
*/
- const val dogfoodingVersion = "2.0.0-SNAPSHOT.055"
+ const val dogfoodingVersion = "2.0.0-SNAPSHOT.058"
/**
* The version to be used for integration tests.
*/
- const val version = "2.0.0-SNAPSHOT.055"
+ const val version = "2.0.0-SNAPSHOT.058"
/**
* The ID of the Gradle plugin.
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt
index d3fe7c6937..b0cc1e8817 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/TestLib.kt
@@ -33,8 +33,8 @@ package io.spine.dependency.local
*/
@Suppress("ConstPropertyName")
object TestLib {
- const val version = "2.0.0-SNAPSHOT.211"
+ const val version = "2.0.0-SNAPSHOT.212"
const val group = Spine.toolsGroup
- const val artifact = "spine-testlib"
+ const val artifact = "base-testlib"
const val lib = "$group:$artifact:$version"
}
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt
index 1d0481d8e4..e78af421da 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/Time.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2025, TeamDev. All rights reserved.
+ * Copyright 2026, TeamDev. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,18 +26,43 @@
package io.spine.dependency.local
+import io.spine.dependency.Dependency
+
/**
* Spine Time library.
*
* @see spine-time
*/
-@Suppress("ConstPropertyName")
-object Time {
- const val version = "2.0.0-SNAPSHOT.232"
- const val group = Spine.group
- const val artifact = "spine-time"
- const val lib = "$group:$artifact:$version"
- const val javaExtensions = "$group:$artifact-java:$version"
- const val kotlinExtensions = "$group:$artifact-kotlin:$version"
- const val testLib = "${Spine.toolsGroup}:spine-time-testlib:$version"
+@Suppress(
+ "unused" /* Some subprojects do not use all Time artifacts. */,
+ "ConstPropertyName" /* We use custom convention for artifact properties. */,
+ "MemberVisibilityCanBePrivate" /* The properties are used directly by other subprojects. */,
+)
+object Time : Dependency() {
+ override val group = Spine.group
+ override val version = "2.0.0-SNAPSHOT.235"
+ private const val infix = "spine-time"
+
+ fun lib(version: String): String = "$group:$infix:$version"
+ val lib get() = lib(version)
+ const val libArtifact: String = infix
+
+ fun javaExtensions(version: String): String = "$group:$infix-java:$version"
+ val javaExtensions get() = javaExtensions(version)
+
+ fun kotlinExtensions(version: String): String = "$group:$infix-kotlin:$version"
+ val kotlinExtensions get() = kotlinExtensions(version)
+
+ fun testLib(version: String): String = "${Spine.toolsGroup}:time-testlib:$version"
+ val testLib get() = testLib(version)
+
+ override val modules: List
+ get() = listOf(
+ lib,
+ javaExtensions,
+ kotlinExtensions,
+ testLib
+ ).map {
+ it.split(":").let { (g, artifact) -> "$g:$artifact" }
+ }
}
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt
index 872127af22..c4b9b6dc7e 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt
@@ -34,8 +34,8 @@ package io.spine.dependency.local
@Suppress("ConstPropertyName", "unused")
object ToolBase {
const val group = Spine.toolsGroup
- const val version = "2.0.0-SNAPSHOT.375"
- const val dogfoodingVersion = "2.0.0-SNAPSHOT.375"
+ const val version = "2.0.0-SNAPSHOT.376"
+ const val dogfoodingVersion = "2.0.0-SNAPSHOT.376"
const val lib = "$group:tool-base:$version"
const val classicCodegen = "$group:classic-codegen:$version"
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt b/buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt
index e10eea540f..549ed2c1b1 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/local/Validation.kt
@@ -36,7 +36,7 @@ object Validation {
/**
* The version of the Validation library artifacts.
*/
- const val version = "2.0.0-SNAPSHOT.406"
+ const val version = "2.0.0-SNAPSHOT.411"
/**
* The last version of Validation compatible with ProtoData.
diff --git a/buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt b/buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt
index bc5a36c120..1c5519005c 100644
--- a/buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt
+++ b/buildSrc/src/main/kotlin/io/spine/dependency/test/Kotest.kt
@@ -35,7 +35,7 @@ package io.spine.dependency.test
*/
@Suppress("unused", "ConstPropertyName")
object Kotest {
- const val version = "6.0.4"
+ const val version = "6.1.11"
const val group = "io.kotest"
const val gradlePluginId = "io.kotest"
const val assertions = "$group:kotest-assertions-core:$version"
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt b/buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt
index deda203638..afccc24b53 100644
--- a/buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/ProjectExtensions.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2025, TeamDev. All rights reserved.
+ * Copyright 2026, TeamDev. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,10 +36,6 @@ import org.gradle.api.tasks.SourceSetContainer
import org.gradle.kotlin.dsl.findByType
import org.gradle.kotlin.dsl.getByType
-/**
- * This file contains extension methods and properties for the Gradle `Project`.
- */
-
/**
* Logs the result of the function using the project logger at `INFO` level.
*/
@@ -86,8 +82,9 @@ fun Project.getTask(name: String): T {
/**
* Obtains Maven artifact ID of this [Project].
*
- * The method checks if [SpinePublishing] extension is configured upon this project. If yes,
- * returns [SpinePublishing.artifactId] for the project. Otherwise, a project's name is returned.
+ * The property getter checks if [SpinePublishing] extension is configured upon this project.
+ * If yes, it returns [SpinePublishing.artifactId] for the project.
+ * Otherwise, a project's name is returned.
*/
val Project.artifactId: String
get() {
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/docs/UpdatePluginVersion.kt b/buildSrc/src/main/kotlin/io/spine/gradle/docs/UpdatePluginVersion.kt
new file mode 100644
index 0000000000..0277bcd281
--- /dev/null
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/docs/UpdatePluginVersion.kt
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2026, TeamDev. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Redistribution and use in source and/or binary forms, with or without
+ * modification, must retain the above copyright notice and the following
+ * disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package io.spine.gradle.docs
+
+import java.io.File
+import org.gradle.api.DefaultTask
+import org.gradle.api.file.DirectoryProperty
+import org.gradle.api.provider.Property
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputDirectory
+import org.gradle.api.tasks.Optional
+import org.gradle.api.tasks.TaskAction
+
+/**
+ * Updates the version of a Gradle plugin in `build.gradle.kts` files.
+ *
+ * The task searches for plugin declarations in the format
+ * `id("plugin-id") version "version-number"` and replaces
+ * the version number with the one found in the version script file.
+ *
+ * @property directory
+ * The directory to scan recursively for `build.gradle.kts` files.
+ * @property version
+ * The version number to set for the plugin.
+ * @property pluginId
+ * The ID of the plugin whose version should be updated.
+ * @property kotlinVersion
+ * Optional. If set, updates the version of the Kotlin plugin declared with
+ * `kotlin("…") version "…"` syntax in the `plugins` block.
+ * This option works in combination with the [version] and [pluginId] properties.
+ */
+abstract class UpdatePluginVersion : DefaultTask() {
+
+ @get:InputDirectory
+ abstract val directory: DirectoryProperty
+
+ @get:Input
+ abstract val version: Property
+
+ @get:Input
+ abstract val pluginId: Property
+
+ @get:Input
+ @get:Optional
+ abstract val kotlinVersion: Property
+
+ /**
+ * Updates plugin versions in build files within the path in the [directory].
+ */
+ @TaskAction
+ fun update() {
+ val rootDir = directory.get().asFile
+
+ val kotlinVersionSet = kotlinVersion.isPresent
+ val kotlinVer = kotlinVersion.orNull
+ val id = pluginId.get()
+ val ver = version.get()
+
+ rootDir.walkTopDown()
+ .filter { it.name == "build.gradle.kts" }
+ .forEach { file ->
+ if (kotlinVersionSet && kotlinVer != null) {
+ updateKotlinPluginVersion(file, kotlinVer)
+ }
+ updatePluginVersion(file, id, ver)
+ }
+ }
+
+ @Suppress("MemberNameEqualsClassName")
+ private fun updatePluginVersion(file: File, id: String, version: String) {
+ val content = file.readText()
+ val pluginId = Regex.escape(id)
+ // Regex to match: id("pluginId") version "version-number"
+ val regex = """id\("$pluginId"\)\s+version\s+"([^"]+)"""".toRegex()
+
+ if (regex.containsMatchIn(content)) {
+ val updatedContent = regex.replace(content) {
+ "id(\"$id\") version \"$version\""
+ }
+ if (content != updatedContent) {
+ file.writeText(updatedContent)
+ logger.info("Updated version of '$id' in `${file.absolutePath}`.")
+ }
+ }
+ }
+
+ private fun updateKotlinPluginVersion(file: File, kotlinVersion: String) {
+ val content = file.readText()
+ // Regex to match Kotlin plugin declarations like: kotlin("jvm") version "1.9.0"
+ val regex = """kotlin\("([^"]+)"\)\s+version\s+"([^"]+)"""".toRegex()
+ if (regex.containsMatchIn(content)) {
+ val updatedContent = regex.replace(content) { matchResult ->
+ val plugin = matchResult.groupValues[1]
+ "kotlin(\"$plugin\") version \"$kotlinVersion\""
+ }
+ if (content != updatedContent) {
+ file.writeText(updatedContent)
+ logger.info("Updated Kotlin plugin version in `${file.absolutePath}`.")
+ }
+ }
+ }
+}
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt b/buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt
index 5b3bbe1290..8a212b7ca4 100644
--- a/buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/publish/PublicationHandler.kt
@@ -27,6 +27,7 @@
package io.spine.gradle.publish
import LicenseSettings
+import io.spine.gradle.artifactId
import io.spine.gradle.isSnapshot
import io.spine.gradle.repo.Repository
import io.spine.gradle.report.pom.InceptionYear
@@ -125,26 +126,27 @@ sealed class PublicationHandler(
}
/**
- * Copies the attributes of Gradle [Project] to this [MavenPublication].
+ * Copies the attributes of the [project] to this [MavenPublication].
*
* The following project attributes are copied:
* * [group][Project.getGroup];
* * [version][Project.getVersion];
* * [description][Project.getDescription].
*
- * Also, this function adds the [artifactPrefix][SpinePublishing.artifactPrefix] to
- * the [artifactId][MavenPublication.setArtifactId] of this publication,
- * if the prefix is not added yet.
+ * The [artifactId] of the publication is copied from the project
+ * [extension property][io.spine.gradle.artifactId] of the same name.
*
- * Finally, the Apache Software License 2.0 is set as the only license
- * under which the published artifact is distributed.
+ * The Apache Software License 2.0 is set as the only license
+ * under which the published artifact is distributed via [LicenseSettings]
+ *
+ * The source control management attributes are obtained from [DocumentationSettings].
+ *
+ * @see LicenseSettings
+ * @see DocumentationSettings
*/
protected fun MavenPublication.copyProjectAttributes() {
groupId = project.group.toString()
- val prefix = project.spinePublishing.artifactPrefix
- if (!artifactId.startsWith(prefix)) {
- artifactId = prefix + artifactId
- }
+ artifactId = project.artifactId
version = project.version.toString()
pom.description.set(project.description)
pom.inceptionYear.set(InceptionYear.value)
diff --git a/buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt b/buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt
index 480175fef1..c065198e92 100644
--- a/buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt
+++ b/buildSrc/src/main/kotlin/io/spine/gradle/publish/SpinePublishing.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2025, TeamDev. All rights reserved.
+ * Copyright 2026, TeamDev. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,7 @@
package io.spine.gradle.publish
import io.spine.gradle.repo.Repository
+import java.util.Locale
import org.gradle.api.Project
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
import org.gradle.kotlin.dsl.apply
@@ -145,9 +146,10 @@ import org.gradle.kotlin.dsl.findByType
* @see [artifacts]
* @see SpinePublishing
*/
-fun Project.spinePublishing(block: SpinePublishing.() -> Unit) {
+fun Project.spinePublishing(block: SpinePublishing.() -> Unit): SpinePublishing {
apply()
val name = SpinePublishing::class.java.simpleName
+ .replaceFirstChar { it.lowercase(Locale.getDefault()) }
val extension = with(extensions) {
findByType() ?: create(name, project)
}
@@ -155,6 +157,7 @@ fun Project.spinePublishing(block: SpinePublishing.() -> Unit) {
block()
configured()
}
+ return extension
}
/**
@@ -182,6 +185,12 @@ open class SpinePublishing(private val project: Project) {
* The default prefix added before a module name when publishing artifacts.
*/
const val DEFAULT_PREFIX = "spine-"
+
+ /**
+ * The reserved value that means that no prefix should be added
+ * to a tool module's artifact ID.
+ */
+ const val NONE_PREFIX = "NONE"
}
private val testJar = TestJar()
@@ -250,10 +259,23 @@ open class SpinePublishing(private val project: Project) {
lateinit var destinations: Set
/**
- * A prefix to be added before the name of each artifact.
+ * A prefix to be added before the name of each artifact, if it does not belong
+ * to the Maven group `"io.spine.tools"`.
+ *
+ * @see toolArtifactPrefix
*/
var artifactPrefix: String = DEFAULT_PREFIX
+ /**
+ * A prefix to be added before a module name if it belongs to
+ * the Maven group `"io.spine.tools"`.
+ *
+ * Use `"NONE"` if you need no prefix before tool module names.
+ *
+ * @see artifactPrefix
+ */
+ var toolArtifactPrefix: String = ""
+
/**
* Allows enabling publishing of [testJar] artifact, containing compilation output
* of "test" source set.
@@ -389,10 +411,31 @@ open class SpinePublishing(private val project: Project) {
/**
* Obtains an artifact ID for the given project.
*
- * It consists of a project's name and [prefix][artifactPrefix]:
- * ``.
+ * @see artifactPrefix
+ * @see toolArtifactPrefix
*/
- fun artifactId(project: Project): String = "$artifactPrefix${project.name}"
+ fun artifactId(project: Project): String {
+ val result = if (project.isTool) {
+ check(!toolArtifactPrefix.isEmpty()) {
+ "Artifact prefix cannot be empty for tool modules. " +
+ "Please set the `toolArtifactPrefix` property in `spinePublishing`. " +
+ "Use `\"NONE\"` to have an empty prefix for tool modules."
+ }
+ val prefix =
+ if (toolArtifactPrefix == NONE_PREFIX) {
+ ""
+ } else {
+ toolArtifactPrefix
+ }
+ "$prefix${project.name}"
+ } else {
+ "$artifactPrefix${project.name}"
+ }
+ return result
+ }
+
+ private val Project.isTool: Boolean
+ get() = group == "io.spine.tools"
/**
* Ensures that all modules, marked as included into [testJar] publishing,
diff --git a/buildSrc/src/test/kotlin/io/spine/gradle/docs/UpdatePluginVersionTest.kt b/buildSrc/src/test/kotlin/io/spine/gradle/docs/UpdatePluginVersionTest.kt
new file mode 100644
index 0000000000..1674b3d34a
--- /dev/null
+++ b/buildSrc/src/test/kotlin/io/spine/gradle/docs/UpdatePluginVersionTest.kt
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2026, TeamDev. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Redistribution and use in source and/or binary forms, with or without
+ * modification, must retain the above copyright notice and the following
+ * disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package io.spine.gradle.docs
+
+import io.kotest.matchers.string.shouldContain
+import java.io.File
+import org.gradle.testfixtures.ProjectBuilder
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.DisplayName
+import org.junit.jupiter.api.Test
+import org.junit.jupiter.api.io.TempDir
+
+@DisplayName("`UpdatePluginVersion` should")
+class UpdatePluginVersionTest {
+
+ @TempDir
+ lateinit var tempDir: File
+
+ private lateinit var buildFile: File
+
+ @BeforeEach
+ fun setUp() {
+ val subDir = File(tempDir, "subproject")
+ subDir.mkdir()
+ buildFile = File(subDir, "build.gradle.kts")
+ buildFile.writeText("""
+ plugins {
+ id("io.spine.validation") version "1.0.0"
+ id("other-plugin") version "0.1.0"
+ }
+ """.trimIndent())
+ }
+
+ @Test
+ fun `update plugin version in build file`() {
+ val project = ProjectBuilder.builder().build()
+ val task = project.tasks.register("updatePluginVersion", UpdatePluginVersion::class.java) {
+ directory.set(tempDir)
+ version.set("2.0.0-TEST")
+ pluginId.set("io.spine.validation")
+ }
+ task.get().update()
+
+ val updatedContent = buildFile.readText()
+ updatedContent shouldContain """id("io.spine.validation") version "2.0.0-TEST""""
+ updatedContent shouldContain """id("other-plugin") version "0.1.0""""
+ }
+
+ @Test
+ fun `update 'kotlin' plugin version when 'kotlinVersion' is set`() {
+ // Overwrite with a file that uses kotlin("jvm") syntax
+ buildFile.writeText(
+ """
+ plugins {
+ kotlin("jvm") version "1.9.10"
+ id("io.spine.validation") version "1.0.0"
+ }
+ """.trimIndent()
+ )
+
+ val project = ProjectBuilder.builder().build()
+ val task = project.tasks.register("updatePluginVersion", UpdatePluginVersion::class.java) {
+ directory.set(tempDir)
+ version.set("2.0.0-TEST")
+ pluginId.set("io.spine.validation")
+ kotlinVersion.set("2.2.21")
+ }
+ task.get().update()
+
+ val updatedContent = buildFile.readText()
+ updatedContent shouldContain """kotlin("jvm") version "2.2.21""""
+ updatedContent shouldContain """id("io.spine.validation") version "2.0.0-TEST""""
+ }
+
+ @Test
+ fun `handle multiple spaces between id and version`() {
+ buildFile.writeText("""
+ plugins {
+ id("io.spine.validation") version "1.0.0"
+ }
+ """.trimIndent())
+
+ val project = ProjectBuilder.builder().build()
+ val task = project.tasks.register("updatePluginVersion", UpdatePluginVersion::class.java) {
+ directory.set(tempDir)
+ version.set("2.0.0-TEST")
+ pluginId.set("io.spine.validation")
+ }
+
+ task.get().update()
+
+ val updatedContent = buildFile.readText()
+ updatedContent shouldContain """id("io.spine.validation") version "2.0.0-TEST""""
+ }
+}
diff --git a/buildSrc/src/test/kotlin/io/spine/gradle/publish/SpinePublishingTest.kt b/buildSrc/src/test/kotlin/io/spine/gradle/publish/SpinePublishingTest.kt
new file mode 100644
index 0000000000..37f58e0403
--- /dev/null
+++ b/buildSrc/src/test/kotlin/io/spine/gradle/publish/SpinePublishingTest.kt
@@ -0,0 +1,261 @@
+/*
+ * Copyright 2026, TeamDev. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Redistribution and use in source and/or binary forms, with or without
+ * modification, must retain the above copyright notice and the following
+ * disclaimer.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package io.spine.gradle.publish
+
+import io.kotest.assertions.throwables.shouldThrow
+import io.kotest.matchers.collections.shouldContain
+import io.kotest.matchers.collections.shouldHaveSize
+import io.kotest.matchers.shouldBe
+import io.kotest.matchers.string.shouldContain
+import io.spine.gradle.repo.Repository
+import org.gradle.api.Project
+import org.gradle.kotlin.dsl.create
+import org.gradle.testfixtures.ProjectBuilder
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.DisplayName
+import org.junit.jupiter.api.Nested
+import org.junit.jupiter.api.Test
+
+@DisplayName("`SpinePublishing` should")
+class SpinePublishingTest {
+
+ private lateinit var project: Project
+ private lateinit var extension: SpinePublishing
+
+ @BeforeEach
+ fun setUp() {
+ project = ProjectBuilder.builder().build()
+ extension = project.spinePublishing { }
+ }
+
+ @Nested
+ inner class `calculate 'artifactId'` {
+
+ @Test
+ fun `with default prefix for non-tool projects`() {
+ val subproject = ProjectBuilder.builder()
+ .withParent(project)
+ .withName("base")
+ .build()
+ subproject.group = "io.spine"
+
+ extension.artifactId(subproject) shouldBe "spine-base"
+ }
+
+ @Test
+ fun `with custom prefix for non-tool projects`() {
+ extension.artifactPrefix = "custom-"
+ val subproject = ProjectBuilder.builder()
+ .withParent(project)
+ .withName("core")
+ .build()
+ subproject.group = "io.spine"
+
+ extension.artifactId(subproject) shouldBe "custom-core"
+ }
+
+ @Test
+ fun `with tool prefix for tool projects`() {
+ extension.toolArtifactPrefix = "tool-"
+ val toolProject = ProjectBuilder.builder()
+ .withParent(project)
+ .withName("model-compiler")
+ .build()
+ toolProject.group = "io.spine.tools"
+
+ extension.artifactId(toolProject) shouldBe "tool-model-compiler"
+ }
+
+ @Test
+ fun `without prefix for tool projects if 'NONE' is specified`() {
+ extension.toolArtifactPrefix = "NONE"
+ val toolProject = ProjectBuilder.builder()
+ .withParent(project)
+ .withName("proto-js")
+ .build()
+ toolProject.group = "io.spine.tools"
+
+ extension.artifactId(toolProject) shouldBe "proto-js"
+ }
+
+ @Test
+ fun `throwing IllegalStateException if tool prefix is empty for tool projects`() {
+ extension.toolArtifactPrefix = ""
+ val toolProject = ProjectBuilder.builder()
+ .withParent(project)
+ .withName("tool")
+ .build()
+ toolProject.group = "io.spine.tools"
+
+ shouldThrow {
+ extension.artifactId(toolProject)
+ }
+ }
+ }
+
+ @Nested
+ inner class `validate configuration` {
+
+ @Test
+ fun `ensuring 'testJar' inclusions are published`() {
+ extension.modules = setOf("pub-module")
+ extension.testJar {
+ inclusions = setOf("non-pub-module")
+ }
+
+ val exception = shouldThrow {
+ extension.configured()
+ }
+ exception.message!! shouldContain "non-pub-module"
+ }
+
+ @Test
+ fun `ensuring 'customPublishing' is not misused with modules`() {
+ extension.modules = setOf("some-module")
+ extension.customPublishing = true
+
+ val exception = shouldThrow {
+ extension.configured()
+ }
+ exception.message!! shouldContain "customPublishing"
+ }
+
+ @Test
+ fun `ensuring modules are not duplicated in root and subproject`() {
+ val rootProject = project
+ val subproject = ProjectBuilder.builder()
+ .withParent(rootProject)
+ .withName("sub")
+ .build()
+
+ // Root project already has the 'spinePublishing' extension created in 'setUp'.
+ // Let's use it instead of creating a second one with a different name.
+ extension.modules = setOf("sub")
+
+ // Subproject's extension must be named 'SpinePublishing'
+ // to be found by SpinePublishing::class.java.simpleName
+ val extensionName = SpinePublishing::class.java.simpleName
+ val subExtension = subproject.extensions.create(extensionName, subproject)
+
+ val exception = shouldThrow {
+ subExtension.configured()
+ }
+ exception.message!! shouldContain "already configured in a root project"
+ }
+ }
+
+ @Nested
+ inner class `identify 'projectsToPublish'` {
+
+ @Test
+ fun `as the project itself if no modules are specified`() {
+ val projects = extension.invokeProjectsToPublish()
+ projects shouldHaveSize 1
+ projects shouldContain project
+ }
+
+ @Test
+ fun `as the specified modules`() {
+ val sub1 = ProjectBuilder.builder().withParent(project).withName("sub1").build()
+ val sub2 = ProjectBuilder.builder().withParent(project).withName("sub2").build()
+
+ extension.modules = setOf("sub1", "sub2")
+
+ val projects = extension.invokeProjectsToPublish()
+ projects shouldHaveSize 2
+ projects shouldContain sub1
+ projects shouldContain sub2
+ }
+
+ @Test
+ fun `including modules with custom publishing`() {
+ val sub1 = ProjectBuilder.builder().withParent(project).withName("sub1").build()
+ val sub2 = ProjectBuilder.builder().withParent(project).withName("sub2").build()
+
+ extension.modules = setOf("sub1")
+ extension.modulesWithCustomPublishing = setOf("sub2")
+
+ val projects = extension.invokeProjectsToPublish()
+ projects shouldHaveSize 2
+ projects shouldContain sub1
+ projects shouldContain sub2
+ }
+ }
+
+ @Nested
+ inner class `resolve 'publishTo' repositories` {
+
+ @Test
+ fun `from the extension itself if destinations are initialized`() {
+ val repo = Repository(
+ "test-repo",
+ "https://example.com/release",
+ "https://example.com/snapshot"
+ )
+ extension.destinations = setOf(repo)
+
+ val repos = project.invokePublishTo(extension)
+ repos shouldHaveSize 1
+ repos shouldContain repo
+ }
+
+ @Test
+ fun `from the parent project if not specified locally`() {
+ val repo = Repository(
+ "parent-repo",
+ "https://example.com/release",
+ "https://example.com/snapshot"
+ )
+ // Root project has its extension named 'spinePublishing' from setUp.
+ extension.destinations = setOf(repo)
+
+ val subproject = ProjectBuilder.builder().withParent(project).withName("sub").build()
+ // Subproject has no local 'spinePublishing' extension.
+
+ val repos = subproject.invokePublishTo(extension)
+ repos shouldHaveSize 1
+ repos shouldContain repo
+ }
+ }
+}
+
+/**
+ * Accesses private/internal methods of [SpinePublishing] for testing purposes.
+ */
+private fun SpinePublishing.invokeProjectsToPublish(): Collection {
+ val method = SpinePublishing::class.java.getDeclaredMethod("projectsToPublish")
+ method.isAccessible = true
+ @Suppress("UNCHECKED_CAST")
+ return method.invoke(this) as Collection
+}
+
+private fun Project.invokePublishTo(extension: SpinePublishing): Set {
+ val method = SpinePublishing::class.java.getDeclaredMethod("publishTo", Project::class.java)
+ method.isAccessible = true
+ @Suppress("UNCHECKED_CAST")
+ return method.invoke(extension, this) as Set
+}
diff --git a/config b/config
index 21366d370b..4a3b103fb0 160000
--- a/config
+++ b/config
@@ -1 +1 @@
-Subproject commit 21366d370b26c28690a42b313c172d6dbb4f4d36
+Subproject commit 4a3b103fb0579d6fe6addd9acd4f241de26bb967
diff --git a/dependencies.md b/dependencies.md
index 7eb864640c..9b17c8e6b0 100644
--- a/dependencies.md
+++ b/dependencies.md
@@ -1,6 +1,6 @@
-# Dependencies of `io.spine.tools:compiler-api:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-api:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -642,27 +642,27 @@
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -1098,14 +1098,14 @@
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-api-tests:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-api-tests:2.0.0-SNAPSHOT.042`
## Runtime
## Compile, tests, and tooling
@@ -1291,27 +1291,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -1471,14 +1471,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-backend:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-backend:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -2124,27 +2124,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -2580,14 +2580,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:40 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-cli:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-cli:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -3282,27 +3282,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -3738,14 +3738,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-gradle-api:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-gradle-api:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -4321,27 +4321,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -4765,14 +4765,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-gradle-plugin:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-gradle-plugin:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -5352,27 +5352,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -5836,14 +5836,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:18 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-jvm:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-jvm:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -6506,27 +6506,27 @@ This report was generated on **Tue Mar 24 17:40:18 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -6962,14 +6962,14 @@ This report was generated on **Tue Mar 24 17:40:18 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-params:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-params:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -7611,27 +7611,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -8059,14 +8059,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-protoc-plugin:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-protoc-plugin:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2.
@@ -8466,27 +8466,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -8886,14 +8886,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-test-env:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-test-env:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -9543,27 +9543,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -9991,14 +9991,14 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:39 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
-# Dependencies of `io.spine.tools:compiler-testlib:2.0.0-SNAPSHOT.041`
+# Dependencies of `io.spine.tools:compiler-testlib:2.0.0-SNAPSHOT.042`
## Runtime
1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0.
@@ -10170,27 +10170,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -10747,27 +10747,27 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
* **Project URL:** [https://github.com/grpc/grpc-java](https://github.com/grpc/grpc-java)
* **License:** [Apache 2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-core-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-assertions-shared-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
-1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.0.4.
+1. **Group** : io.kotest. **Name** : kotest-common-jvm. **Version** : 6.1.11.
* **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest)
* **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0)
@@ -11203,6 +11203,6 @@ This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
-This report was generated on **Tue Mar 24 17:40:10 WET 2026** using
+This report was generated on **Mon Apr 06 18:24:40 WEST 2026** using
[Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under
[Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
\ No newline at end of file
diff --git a/gradle-plugin/build.gradle.kts b/gradle-plugin/build.gradle.kts
index 2fadabdff0..c6cb5f80b1 100644
--- a/gradle-plugin/build.gradle.kts
+++ b/gradle-plugin/build.gradle.kts
@@ -161,7 +161,7 @@ publishing {
}
}
publications.withType().all {
- groupId = "io.spine.tools"
+ groupId = Spine.toolsGroup
artifactId = moduleArtifactId
version = compilerVersion
}
diff --git a/gradlew b/gradlew
index d992737997..739907dfd1 100755
--- a/gradlew
+++ b/gradlew
@@ -1,8 +1,5 @@
#!/bin/sh
-# Temporarily disable the runtime check of Protobuf version compatibility.
-export TEMPORARILY_DISABLE_PROTOBUF_VERSION_CHECK=true
-
#
# Copyright © 2015 the original authors.
#
@@ -60,7 +57,7 @@ export TEMPORARILY_DISABLE_PROTOBUF_VERSION_CHECK=true
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
diff --git a/gradlew.bat b/gradlew.bat
index c7f1ffa386..c4bdd3ab8e 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -16,9 +16,6 @@
@rem SPDX-License-Identifier: Apache-2.0
@rem
-@rem Temporarily disable the runtime check of Protobuf version compatibility.
-set TEMPORARILY_DISABLE_PROTOBUF_VERSION_CHECK=true
-
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
diff --git a/pom.xml b/pom.xml
index 95aa40fb28..9b5681c75d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@ all modules and does not describe the project structure per-subproject.
-->
io.spine.tools
spine-compiler
-2.0.0-SNAPSHOT.041
+2.0.0-SNAPSHOT.042
2015
@@ -98,19 +98,19 @@ all modules and does not describe the project structure per-subproject.
io.spine
spine-base
- 2.0.0-SNAPSHOT.386
+ 2.0.0-SNAPSHOT.387
compile
io.spine
spine-environment
- 2.0.0-SNAPSHOT.386
+ 2.0.0-SNAPSHOT.387
compile
io.spine
spine-format
- 2.0.0-SNAPSHOT.386
+ 2.0.0-SNAPSHOT.387
compile
@@ -134,37 +134,37 @@ all modules and does not describe the project structure per-subproject.
io.spine
spine-server
- 2.0.0-SNAPSHOT.371
+ 2.0.0-SNAPSHOT.372
compile
io.spine
spine-validation-jvm-runtime
- 2.0.0-SNAPSHOT.406
+ 2.0.0-SNAPSHOT.411
compile
io.spine.tools
gradle-plugin-api
- 2.0.0-SNAPSHOT.375
+ 2.0.0-SNAPSHOT.376
compile
io.spine.tools
jvm-tools
- 2.0.0-SNAPSHOT.375
+ 2.0.0-SNAPSHOT.376
compile
io.spine.tools
plugin-base
- 2.0.0-SNAPSHOT.375
+ 2.0.0-SNAPSHOT.376
compile
io.spine.tools
protobuf-setup-plugins
- 2.0.0-SNAPSHOT.375
+ 2.0.0-SNAPSHOT.376
compile
@@ -176,13 +176,13 @@ all modules and does not describe the project structure per-subproject.
io.spine.tools
psi-java
- 2.0.0-SNAPSHOT.375
+ 2.0.0-SNAPSHOT.376
compile
io.spine.tools
tool-base
- 2.0.0-SNAPSHOT.375
+ 2.0.0-SNAPSHOT.376
compile
@@ -230,43 +230,43 @@ all modules and does not describe the project structure per-subproject.
io.kotest
kotest-assertions-core
- 6.0.4
+ 6.1.11
test
io.spine
spine-time-java
- 2.0.0-SNAPSHOT.232
+ 2.0.0-SNAPSHOT.235
test
io.spine.tools
- plugin-testlib
- 2.0.0-SNAPSHOT.375
+ base-testlib
+ 2.0.0-SNAPSHOT.212
test
io.spine.tools
- spine-logging-testlib
- 2.0.0-SNAPSHOT.411
+ plugin-testlib
+ 2.0.0-SNAPSHOT.376
test
io.spine.tools
- spine-server-testlib
- 2.0.0-SNAPSHOT.371
+ spine-logging-testlib
+ 2.0.0-SNAPSHOT.411
test
io.spine.tools
- spine-testlib
- 2.0.0-SNAPSHOT.211
+ spine-server-testlib
+ 2.0.0-SNAPSHOT.372
test
io.spine.tools
- spine-time-testlib
- 2.0.0-SNAPSHOT.232
+ time-testlib
+ 2.0.0-SNAPSHOT.235
test
@@ -350,22 +350,22 @@ all modules and does not describe the project structure per-subproject.
io.spine.tools
compiler-cli-all
- 2.0.0-SNAPSHOT.040
+ 2.0.0-SNAPSHOT.041
io.spine.tools
compiler-protoc-plugin
- 2.0.0-SNAPSHOT.040
+ 2.0.0-SNAPSHOT.041
io.spine.tools
core-jvm-gradle-plugins
- 2.0.0-SNAPSHOT.055
+ 2.0.0-SNAPSHOT.058
io.spine.tools
core-jvm-routing
- 2.0.0-SNAPSHOT.055
+ 2.0.0-SNAPSHOT.058
io.spine.tools
@@ -380,7 +380,7 @@ all modules and does not describe the project structure per-subproject.
io.spine.tools
validation-java-bundle
- 2.0.0-SNAPSHOT.406
+ 2.0.0-SNAPSHOT.411
org.jacoco
diff --git a/version.gradle.kts b/version.gradle.kts
index f64c4aaa54..a80b44948a 100644
--- a/version.gradle.kts
+++ b/version.gradle.kts
@@ -30,7 +30,7 @@
* This version is also used by integration test projects.
* E.g. see `tests/consumer/build.gradle.kts`.
*/
-val compilerVersion: String by extra("2.0.0-SNAPSHOT.041")
+val compilerVersion: String by extra("2.0.0-SNAPSHOT.042")
/**
* The version, same as [compilerVersion], which is used for publishing