Skip to content

Move runtime publications to a separate module - #1331

Merged
Hubert Błaszczyk (hub-bla) merged 4 commits into
masterfrom
hub.bla/runtime-publication-module
Oct 26, 2026
Merged

Hubert Błaszczyk (hub-bla) merged 4 commits into
masterfrom
hub.bla/runtime-publication-module

Conversation

@hub-bla

Copy link
Copy Markdown
Contributor

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-graphite and skiko-skottie cannot use a normal api(project(":")) dependency on core. They use compileOnly instead which means the required core dependency is not included in their published metadata and user must declare it manually

This 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-graphite and skiko-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.

@hub-bla
Hubert Błaszczyk (hub-bla) force-pushed the hub.bla/runtime-publication-module branch from 753b813 to 1c20b1d Compare October 22, 2026 11:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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 compileOnly to api and 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

Comment thread skiko/runtime-publications/build.gradle.kts
@hub-bla
Hubert Błaszczyk (hub-bla) merged commit 07c20c3 into master Oct 26, 2026
21 checks passed
@hub-bla
Hubert Błaszczyk (hub-bla) deleted the hub.bla/runtime-publication-module branch October 26, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants