Skip to content

Update config; migrate to new Spine APIs, Gradle 9 and JVM 17#210

Draft
alexander-yevsyukov wants to merge 7 commits into
masterfrom
update-config
Draft

Update config; migrate to new Spine APIs, Gradle 9 and JVM 17#210
alexander-yevsyukov wants to merge 7 commits into
masterfrom
update-config

Conversation

@alexander-yevsyukov

@alexander-yevsyukov alexander-yevsyukov commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Updates the config submodule to the latest version and migrates the project to the new
build infrastructure and Spine 2.0 APIs. The three published libraries — web,
firebase-web, and testutil-web — build and test cleanly with ./gradlew clean build.

Published version: 2.0.0-SNAPSHOT.80.

Build infrastructure

  • config submodule updated; buildSrc synced to the new dependency layout
    (io.spine.dependency.{lib,build,test,local,boms,kotlinx}).
  • Gradle 9.5.1 (wrapper bump) and JVM 17 (required by the new Spine artifacts; was JVM 11).
  • Root build.gradle.kts migrated to the new helpers: standardSpineSdkRepositories() /
    repositories.standardToSpineSdk(), forceVersions(), BomsPlugin, KoverConfig
    (was JacocoConfig), dokka-setup (was dokka-for-java), the protobuf/errorprone
    plugin accessors, the compilerOptions Kotlin DSL, and the updated
    spinePublishing / updateGitHubPages APIs.
  • Version model moved to io.spine.dependency.local.* objects (CoreJvm.server,
    Base.lib, TestLib.lib, …); the per-artifact version extras were dropped from
    version.gradle.kts (only the spine-mc-js version remains as a string).
  • Reconstructed dependency-conflict resolution (buildscript + per-project force lists for
    Jackson / Kotlin / gRPC / Spine); added the Google Cloud and OpenTelemetry BOMs to
    firebase-web to align the Firebase Admin SDK tree; added the JUnit Platform launcher
    (now required on the test runtime classpath under Gradle 9).
  • Subproject code-generation plugin io.spine.mc-javaio.spine.core-jvm.

Source migrations

Consequences of the Spine version jump (.68.376/.4xx):

  • io.spine.json.Json.{toCompactJson,fromJson}io.spine.type.Json extensions
    (fromJson(json, cls)fromJson(cls, json); it now throws IllegalStateException,
    which JsonMessageParser now handles so invalid input still yields HTTP 400).
  • Logging fully migrated to Spine Logging (no Flogger): the old
    io.spine.logging.Logging mixin (_error()) → WithLogging + logger().atError();
    static loggers (FluentLogger.forEnclosingClass()) →
    io.spine.logging.LoggingFactory.forEnclosingClass().
  • Test log capture SimpleLoggingTestio.spine.testing.logging.LoggingTest; removed the
    now-ambiguous Truth8.assertThat (merged into Truth).
  • Fixed JSpecify-migration typos (import import …, @NotNull@NonNull).

Temporarily disabled — JS Protobuf tooling outage

Commented out in settings.gradle.kts until the tooling is compatible with the new config:

  • client-js, js-testsspine-mc-js is unresolvable: its spine-tool-base /
    spine-plugin-base closure was removed from the repositories and is binary-incompatible
    with the new tool-base, and protoc no longer ships a js built-in (it now needs the
    external protoc-gen-js plugin).
  • test-appgretty 3.0.6 references org.gradle.util.VersionNumber, a Gradle internal
    removed in Gradle 9.

Verification

./gradlew clean build is green — 83 tests pass (web 17, firebase-web 60,
testutil-web 6), along with PMD, Checkstyle, Kover, license reports, and POM generation.

Follow-ups

  • Restore JS generation once a config-compatible spine-mc-js (and protoc-gen-js) is
    available, and upgrade gretty so test-app can return.
  • Optional: replace the deprecated vBuild() calls with build() in firebase-web.

🤖 Generated with Claude Code

@alexander-yevsyukov alexander-yevsyukov moved this to 🏗 In progress in v2.0 Jun 20, 2026
@alexander-yevsyukov alexander-yevsyukov self-assigned this Jun 20, 2026
@alexander-yevsyukov alexander-yevsyukov changed the title Update config Update config; migrate to new Spine APIs, Gradle 9 and JVM 17 Jun 20, 2026
@alexander-yevsyukov alexander-yevsyukov moved this from 🏗 In progress to 📋 Backlog in v2.0 Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 📋 Backlog

Development

Successfully merging this pull request may close these issues.

1 participant