Publish 'skiko-awt-runtime' (#1119)
This publication creates one variant for each native platform.
It allows depending (and exposing) a single dependency, which can later
be resolved to platform-specific artifacts.
<details>
<summary>skiko-awt-runtime.module</summary>
```json
{
"formatVersion": "1.1",
"component": {
"group": "org.jetbrains.skiko",
"module": "skiko-awt-runtime",
"version": "1.0-SNAPSHOT",
"attributes": {
"org.gradle.status": "integration"
}
},
"createdBy": {
"gradle": {
"version": "8.13"
}
},
"variants": [
{
"name": "jvmRuntimeElements-macos-x64",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "external",
"org.gradle.jvm.environment": "standard-jvm",
"org.gradle.libraryelements": "jar",
"org.gradle.native.architecture": "x86-64",
"org.gradle.native.operatingSystem": "macos",
"org.gradle.usage": "java-runtime",
"org.jetbrains.kotlin.platform.type": "jvm"
},
"dependencies": [
{
"group": "org.jetbrains.skiko",
"module": "skiko-awt-runtime-macos-x64",
"version": {
"requires": "1.0-SNAPSHOT"
}
}
]
},
{
"name": "jvmRuntimeElements-macos-arm64",
"attributes": {
"org.gradle.category": "library",
"org.gradle.dependency.bundling": "external",
"org.gradle.jvm.environment": "standard-jvm",
"org.gradle.libraryelements": "jar",
"org.gradle.native.architecture": "aarch64",
"org.gradle.native.operatingSystem": "macos",
"org.gradle.usage": "java-runtime",
"org.jetbrains.kotlin.platform.type": "jvm"
},
"dependencies": [
{
"group": "org.jetbrains.skiko",
"module": "skiko-awt-runtime-macos-arm64",
"version": {
"requires": "1.0-SNAPSHOT"
}
}
]
}
]
}
```
</details>
<details>
<summary>skiko-awt-runtime.pom</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- This module was also published with a richer model, Gradle metadata, -->
<!-- which should be used instead. Do not delete the following line which -->
<!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
<!-- that they should prefer consuming it instead. -->
<!-- do_not_remove: published-with-gradle-metadata -->
<modelVersion>4.0.0</modelVersion>
<groupId>org.jetbrains.skiko</groupId>
<artifactId>skiko-awt-runtime</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Skiko JVM Runtime</name>
<description>Kotlin Skia bindings</description>
<url>https://www.github.com/JetBrains/skiko</url>
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<name>Compose Multiplatform Team</name>
<organization>JetBrains</organization>
<organizationUrl>https://www.jetbrains.com</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:https://www.github.com/JetBrains/skiko.git</connection>
<developerConnection>scm:git:https://www.github.com/JetBrains/skiko.git</developerConnection>
<url>https://www.github.com/JetBrains/skiko</url>
</scm>
</project>
```
</details>
Simple example usage:
```kotlin
kotlin {
target.attributes {
attribute(ARCHITECTURE_ATTRIBUTE, objects.named(DefaultNativePlatform.getCurrentArchitecture().name))
attribute(OPERATING_SYSTEM_ATTRIBUTE, objects.named(DefaultNativePlatform.getCurrentOperatingSystem().toFamilyName()))
}
}
dependencies {
implementation("org.jetbrains.skiko:skiko-awt:1.0-SNAPSHOT")
implementation("org.jetbrains.skiko:skiko-awt-runtime:1.0-SNAPSHOT")
}
```
## Motivation
This allows 'intermediate' libraries to express that this dependency
exists (in a single publication) and push down the artifact selection to
consumers. This is an advanced feature and can be leveraged by more
complex builds.
---------
Co-authored-by:
Igor Demin <igor.demin@jetbrains.com>
Showing
Please register or sign in to comment