diff --git a/build.gradle.kts b/build.gradle.kts index 366eb7fcad..983b380cd4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -80,6 +80,8 @@ plugins { } spinePublishing { + artifactPrefix = "spine-validation-" + toolArtifactPrefix = "validation-" modules = setOf( "context", "java", @@ -96,7 +98,6 @@ spinePublishing { cloudArtifactRegistry ) } - artifactPrefix = "validation-" } allprojects { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 2cd94daf1b..1a3fc8a647 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -141,6 +141,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( @@ -193,8 +207,9 @@ dependencies { implementation(it) } - testImplementation(platform("org.junit:junit-bom:5.11.4")) + 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") } 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/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 cf429bf432..3917eeb972 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.408" + const val version = "2.0.0-SNAPSHOT.409" /** * 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..58fb528762 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.10" 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/docs/UpdatePluginVersion.kt b/buildSrc/src/main/kotlin/io/spine/gradle/docs/UpdatePluginVersion.kt index e384aa75bf..0277bcd281 100644 --- a/buildSrc/src/main/kotlin/io/spine/gradle/docs/UpdatePluginVersion.kt +++ b/buildSrc/src/main/kotlin/io/spine/gradle/docs/UpdatePluginVersion.kt @@ -90,10 +90,12 @@ abstract class UpdatePluginVersion : DefaultTask() { } } + @Suppress("MemberNameEqualsClassName") private fun updatePluginVersion(file: File, id: String, version: String) { val content = file.readText() - // Regex to match: id("plugin-id") version "version-number" - val regex = """id\("$id"\)\s+version\s+"([^"]+)"""".toRegex() + 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) { 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..37fdf5f7db 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,26 @@ 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 { + 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 } + return "$prefix${project.name}" + } + return "$artifactPrefix${project.name}" + } + + 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 index 43bad6d93c..1674b3d34a 100644 --- a/buildSrc/src/test/kotlin/io/spine/gradle/docs/UpdatePluginVersionTest.kt +++ b/buildSrc/src/test/kotlin/io/spine/gradle/docs/UpdatePluginVersionTest.kt @@ -26,13 +26,15 @@ 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.Assertions.assertTrue 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 @@ -64,8 +66,8 @@ class UpdatePluginVersionTest { task.get().update() val updatedContent = buildFile.readText() - assertTrue(updatedContent.contains("""id("io.spine.validation") version "2.0.0-TEST"""")) - assertTrue(updatedContent.contains("""id("other-plugin") version "0.1.0"""")) + updatedContent shouldContain """id("io.spine.validation") version "2.0.0-TEST"""" + updatedContent shouldContain """id("other-plugin") version "0.1.0"""" } @Test @@ -90,8 +92,8 @@ class UpdatePluginVersionTest { task.get().update() val updatedContent = buildFile.readText() - assertTrue(updatedContent.contains("""kotlin("jvm") version "2.2.21""")) - assertTrue(updatedContent.contains("""id("io.spine.validation") version "2.0.0-TEST""")) + updatedContent shouldContain """kotlin("jvm") version "2.2.21"""" + updatedContent shouldContain """id("io.spine.validation") version "2.0.0-TEST"""" } @Test @@ -112,6 +114,6 @@ class UpdatePluginVersionTest { task.get().update() val updatedContent = buildFile.readText() - assertTrue(updatedContent.contains("""id("io.spine.validation") version "2.0.0-TEST"""")) + 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 16dc2128cb..dfc4f6db3f 160000 --- a/config +++ b/config @@ -1 +1 @@ -Subproject commit 16dc2128cb2e215c648e794723bf69711b0a6e08 +Subproject commit dfc4f6db3f25e0eddbf640e148c3cb2d3a3795b1 diff --git a/dependencies.md b/dependencies.md index a8617d3405..fe0f5fafff 100644 --- a/dependencies.md +++ b/dependencies.md @@ -1,6 +1,6 @@ -# Dependencies of `io.spine.tools:validation-context:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-context:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -640,27 +640,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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -1114,14 +1114,14 @@ The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:06 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:validation-context-tests:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-context-tests:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -1718,28 +1718,28 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:02 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:validation-docs:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-docs:2.0.0-SNAPSHOT.410` ## Runtime ## Compile, tests, and tooling The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 16:48:33 WET 2026** using +This report was generated on **Fri Apr 03 17:45:01 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:validation-gradle-plugin:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-gradle-plugin:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -2317,27 +2317,27 @@ This report was generated on **Thu Mar 26 16:48:33 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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -2791,14 +2791,14 @@ This report was generated on **Thu Mar 26 16:48:33 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:04 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:validation-java:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-java:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -3390,27 +3390,27 @@ This report was generated on **Thu Mar 26 17:10:29 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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -3844,14 +3844,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:04 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:validation-java-bundle:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-java-bundle:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : org.jetbrains. **Name** : annotations. **Version** : 13.0. @@ -3898,14 +3898,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:28 WET 2026** using +This report was generated on **Fri Apr 03 17:45:01 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:validation-jvm-runtime:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine:spine-validation-jvm-runtime:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -4271,27 +4271,27 @@ This report was generated on **Thu Mar 26 17:10:28 WET 2026** using * **Project URL:** [https://detekt.dev](https://detekt.dev) * **License:** [The Apache Software License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt) -1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4. +1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -4705,14 +4705,14 @@ This report was generated on **Thu Mar 26 17:10:28 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:03 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:validation-consumer:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-consumer:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -5295,14 +5295,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:02 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:validation-consumer-dependency:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-consumer-dependency:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -5780,14 +5780,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:03 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:validation-extensions:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-extensions:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -6424,14 +6424,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:03 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:validation-runtime:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-runtime:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -6744,27 +6744,27 @@ This report was generated on **Thu Mar 26 17:10:29 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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -7016,14 +7016,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:03 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:validation-validating:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-validating:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -7359,27 +7359,27 @@ This report was generated on **Thu Mar 26 17:10:29 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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -7647,14 +7647,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:03 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:validation-validator:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-validator:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.fasterxml.jackson. **Name** : jackson-bom. **Version** : 2.20.0. @@ -8114,27 +8114,27 @@ This report was generated on **Thu Mar 26 17:10:29 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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -8390,14 +8390,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:03 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:validation-validator-dependency:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-validator-dependency:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -8630,14 +8630,14 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:02 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:validation-vanilla:2.0.0-SNAPSHOT.409` +# Dependencies of `io.spine.tools:validation-vanilla:2.0.0-SNAPSHOT.410` ## Runtime 1. **Group** : com.google.code.findbugs. **Name** : jsr305. **Version** : 3.0.2. @@ -8824,27 +8824,27 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using 1. **Group** : io.github.java-diff-utils. **Name** : java-diff-utils. **Version** : 4.16. * **License:** [The Apache Software License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt) -1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.0.4. +1. **Group** : io.kotest. **Name** : kotest-assertions-core. **Version** : 6.1.10. * **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.10. * **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.10. * **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.10. * **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.10. * **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.10. * **Project URL:** [https://github.com/kotest/kotest](https://github.com/kotest/kotest) * **License:** [Apache-2.0](https://opensource.org/licenses/Apache-2.0) @@ -8980,6 +8980,6 @@ This report was generated on **Thu Mar 26 17:10:29 WET 2026** using The dependencies distributed under several licenses, are used according their commercial-use-friendly license. -This report was generated on **Thu Mar 26 17:10:29 WET 2026** using +This report was generated on **Fri Apr 03 17:45:02 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/docs/_examples b/docs/_examples index 53809c8701..4ce8b4d494 160000 --- a/docs/_examples +++ b/docs/_examples @@ -1 +1 @@ -Subproject commit 53809c87013a33977613a34eaa5208fd4323fff9 +Subproject commit 4ce8b4d494aae795a93887cfb6e71ccc982fec1a diff --git a/docs/_preview/package-lock.json b/docs/_preview/package-lock.json index f2a2bed615..248e35a432 100644 --- a/docs/_preview/package-lock.json +++ b/docs/_preview/package-lock.json @@ -763,10 +763,11 @@ "dev": true }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1153,10 +1154,11 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, diff --git a/docs/content/docs/validation/01-getting-started/adding-to-build.md b/docs/content/docs/validation/01-getting-started/adding-to-build.md index ec811fa82b..7e5ebe8778 100644 --- a/docs/content/docs/validation/01-getting-started/adding-to-build.md +++ b/docs/content/docs/validation/01-getting-started/adding-to-build.md @@ -90,7 +90,7 @@ Add the Validation plugin to the build. ```kotlin plugins { module - id("io.spine.validation") version "2.0.0-SNAPSHOT.409" + id("io.spine.validation") version "2.0.0-SNAPSHOT.410" } ``` diff --git a/java-bundle/build.gradle.kts b/java-bundle/build.gradle.kts index e21237a081..cfe5215590 100644 --- a/java-bundle/build.gradle.kts +++ b/java-bundle/build.gradle.kts @@ -83,7 +83,7 @@ dependencies { Change.group to Change.artifact, Logging.group to Logging.loggingArtifact, Reflect.group to Reflect.artifact, - Time.group to Time.artifact, + Time.group to Time.libArtifact, CoreJvm.group to CoreJvm.serverArtifact, ).forEach { (group, artifact) -> diff --git a/pom.xml b/pom.xml index 2c9afc3c22..248febda6b 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 validation -2.0.0-SNAPSHOT.409 +2.0.0-SNAPSHOT.410 2015 @@ -50,19 +50,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-time - 2.0.0-SNAPSHOT.232 + 2.0.0-SNAPSHOT.235 compile io.spine spine-validation-jvm-runtime - 2.0.0-SNAPSHOT.408 + 2.0.0-SNAPSHOT.409 compile @@ -92,7 +92,7 @@ all modules and does not describe the project structure per-subproject. io.spine.tools jvm-tools - 2.0.0-SNAPSHOT.375 + 2.0.0-SNAPSHOT.376 compile @@ -146,7 +146,7 @@ all modules and does not describe the project structure per-subproject. io.kotest kotest-assertions-core - 6.0.4 + 6.1.10 test @@ -289,7 +289,7 @@ all modules and does not describe the project structure per-subproject. io.spine.tools validation-java-bundle - 2.0.0-SNAPSHOT.408 + 2.0.0-SNAPSHOT.409 net.sourceforge.pmd diff --git a/version.gradle.kts b/version.gradle.kts index fd11e7cf40..d8860bdb28 100644 --- a/version.gradle.kts +++ b/version.gradle.kts @@ -29,4 +29,4 @@ * * For Spine-based dependencies please see [io.spine.dependency.local.Spine]. */ -val validationVersion by extra("2.0.0-SNAPSHOT.409") +val validationVersion by extra("2.0.0-SNAPSHOT.410")