Repository navigation
Move runtime publications to a separate module - #1331
Merged
Hubert Błaszczyk (hub-bla) merged 4 commits intoOct 26, 2026
Merged
Conversation
Hubert Błaszczyk (hub-bla)
requested review from
Ivan Matkov (MatkovIvan) and
Igor Demin (igordmn)
October 15, 2026 08:45
Hubert Błaszczyk (hub-bla)
force-pushed
the
hub.bla/runtime-publication-module
branch
from
October 22, 2026 11:55
753b813 to
1c20b1d
Compare
Igor Demin (igordmn)
approved these changes
Oct 22, 2026
Igor Demin (igordmn)
self-requested a review
October 22, 2026 18:25
Ivan Matkov (MatkovIvan)
approved these changes
Oct 23, 2026
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Missing archive destination defaults and lost Windows ANGLE publication dependencies block reliable runtime publishing.
2 open issues
What changed in this PR
Moves JVM runtime publishing into a dedicated module, separating it from Kotlin library publishing so extensions can declare transitive core dependencies without ambiguous Gradle project mapping.
Changes:
- Adds a runtime-publications module for platform-specific, bundled, and variant-based runtime artifacts.
- Changes Graphite and Skottie core dependencies from
compileOnlytoapiand adds matching core runtime dependencies. - Exposes producer runtime JARs through consumable configurations and updates publishing and signing wiring.
| File | Description |
|---|---|
skiko/skiko-skottie/build.gradle.kts |
Declares core as an API dependency. |
skiko/skiko-graphite/build.gradle.kts |
Declares core as an API dependency. |
skiko/settings.gradle.kts |
Includes the runtime-publications module. |
skiko/runtime-publications/build.gradle.kts |
Configures runtime publication families, targets, and signing. |
skiko/buildSrc/src/main/kotlin/org/jetbrains/skiko/build/publishing/runtimePublishing.kt |
Implements relocated runtime publications and compatibility task aliases. |
skiko/buildSrc/src/main/kotlin/org/jetbrains/skiko/build/publishing/publishing.kt |
Removes runtime publishing from producer publication setup. |
skiko/buildSrc/src/main/kotlin/org/jetbrains/skiko/build/configuration/JvmTasksConfiguration.kt |
Exposes runtime JAR configurations for extension modules too. |
skiko/buildSrc/src/main/kotlin/org/jetbrains/skiko/build/configuration/CommonTasksConfiguration.kt |
Removes obsolete cross-publication signing dependencies. |
Review effort: Balanced
Igor Demin (igordmn)
approved these changes
Oct 23, 2026
Hubert Błaszczyk (hub-bla)
deleted the
hub.bla/runtime-publication-module
branch
October 26, 2026 08:15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Skiko currently publishes platform-specific JVM runtime artifacts from the same projects that produce the Kotlin libraries. Having these additional publications makes Gradle project dependency mapping ambiguous.
As a result, extension modules such as
skiko-graphiteandskiko-skottiecannot use a normalapi(project(":"))dependency on core. They usecompileOnlyinstead which means the required core dependency is not included in their published metadata and user must declare it manuallyThis PR moves JVM runtime publications into a dedicated runtime-publications module. The producer projects now only expose their runtime JARs through consumable Gradle configurations while the new module is responsible for publishing them.
Additionally, runtime publications can now declare dependencies on other runtime publications. This allows extension runtimes (
skiko-graphiteandskiko-skottie) to transitively bring in the matching platform-specific Skiko core runtime.This is an internal restructuring of the Skiko build. It does not change the artifacts or coordinates used by Skiko consumers.