From 2be77eddc672c3499b7a4a8c677113c63154e707 Mon Sep 17 00:00:00 2001 From: Kolchurin Konstantin Date: Mon, 31 Aug 2026 10:25:29 +0700 Subject: [PATCH 1/2] convention plugin of publication replaced on moko.publication --- .github/workflows/publish.yml | 9 ++- build.gradle.kts | 15 ++-- gradle.properties | 7 ++ gradle/libs.versions.toml | 1 + .../android-publication-convention.gradle.kts | 15 ---- .../kotlin/publication-convention.gradle.kts | 70 ------------------- graphics/build.gradle.kts | 5 +- 7 files changed, 23 insertions(+), 99 deletions(-) delete mode 100644 graphics-build-logic/src/main/kotlin/android-publication-convention.gradle.kts delete mode 100644 graphics-build-logic/src/main/kotlin/publication-convention.gradle.kts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6cfc478..1204229 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,16 +10,13 @@ on: jobs: publish: name: Publish library at mavenCentral - runs-on: ${{ matrix.os }} + runs-on: macos-latest env: OSSRH_USER: ${{ secrets.OSSRH_USER }} OSSRH_KEY: ${{ secrets.OSSRH_KEY }} SIGNING_KEY_ID: ${{ secrets.SIGNING_KEYID }} SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} SIGNING_KEY: ${{ secrets.GPG_KEY_CONTENTS }} - strategy: - matrix: - os: [macos-latest, windows-latest, ubuntu-latest] steps: - uses: actions/checkout@v7 - name: Set up JDK 17 @@ -27,8 +24,10 @@ jobs: with: distribution: temurin java-version: '17' + - name: Prebuild library + run: ./gradlew publishToMavenLocal - name: Publish - run: ./gradlew publish -DIS_MAIN_HOST=${{ matrix.os == 'ubuntu-latest' }} + run: ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository release: name: Create release needs: publish diff --git a/build.gradle.kts b/build.gradle.kts index ec0dda5..c243470 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,19 +12,24 @@ buildscript { } dependencies { classpath(":graphics-build-logic") + classpath(libs.mokoGradlePlugin) } } +apply(plugin = "dev.icerock.moko.gradle.publication.nexus") + +group = "dev.icerock.moko" +version = libs.versions.mokoGraphicsVersion.get() + allprojects { - plugins.withId("org.gradle.maven-publish") { - group = "dev.icerock.moko" - version = libs.versions.mokoGraphicsVersion.get() - } + group = "dev.icerock.moko" + version = rootProject.version + tasks.withType { compilerOptions.jvmTarget = JvmTarget.JVM_1_8 } - // fix Reason: Task ':graphics:publishJsPublicationToOSSRHRepository' uses this output of task ':graphics:signAndroidDebugPublication' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. + // Ensure all publication tasks wait for generated signatures. val signingTasks = tasks.withType() tasks.withType().configureEach { dependsOn(signingTasks) diff --git a/gradle.properties b/gradle.properties index 3fc808a..2708521 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,3 +8,10 @@ kotlin.mpp.stability.nowarn=true kotlin.js.yarn=false android.useAndroidX=true + +moko.publish.name=MOKO graphics +moko.publish.description=Graphics primitives for mobile (android & ios) Kotlin Multiplatform development +moko.publish.repo.org=icerockdev +moko.publish.repo.name=moko-graphics +moko.publish.license=Apache-2.0 +moko.publish.developers=Alex009|Aleksey Mikhailov|aleksey.mikhailov@icerockdev.com,nrobi144|Nagy Robert|nagyrobi144@gmail.com diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 01156c4..e7abd5d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,4 +7,5 @@ mokoGraphicsVersion = "0.10.2" appCompat = { module = "androidx.appcompat:appcompat", version.ref = "androidAppCompatVersion" } annotation = { module = "androidx.annotation:annotation", version.ref = "androidAnnotationVersion" } mokoGraphics = { module = "dev.icerock.moko:graphics", version.ref = "mokoGraphicsVersion" } +mokoGradlePlugin = { module = "dev.icerock.moko:moko-gradle-plugin", version = "0.6.1" } kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test" } diff --git a/graphics-build-logic/src/main/kotlin/android-publication-convention.gradle.kts b/graphics-build-logic/src/main/kotlin/android-publication-convention.gradle.kts deleted file mode 100644 index b4dae9e..0000000 --- a/graphics-build-logic/src/main/kotlin/android-publication-convention.gradle.kts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -plugins { - id("publication-convention") -} - -afterEvaluate { - publishing.publications { - create("release", MavenPublication::class.java) { - from(components.getByName("release")) - } - } -} diff --git a/graphics-build-logic/src/main/kotlin/publication-convention.gradle.kts b/graphics-build-logic/src/main/kotlin/publication-convention.gradle.kts deleted file mode 100644 index 57d7525..0000000 --- a/graphics-build-logic/src/main/kotlin/publication-convention.gradle.kts +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -import java.util.Base64 - -plugins { - id("javadoc-stub-convention") - id("org.gradle.maven-publish") - id("signing") -} - -publishing { - repositories.maven("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") { - name = "OSSRH" - - credentials { - username = System.getenv("OSSRH_USER") - password = System.getenv("OSSRH_KEY") - } - } - - publications.withType { - // Provide artifacts information requited by Maven Central - pom { - name.set("MOKO graphics") - description.set("Graphics primitives for mobile (android & ios) Kotlin Multiplatform development") - url.set("https://github.com/icerockdev/moko-graphics") - licenses { - license { - name.set("Apache-2.0") - distribution.set("repo") - url.set("https://github.com/icerockdev/moko-graphics/blob/master/LICENSE.md") - } - } - - developers { - developer { - id.set("Alex009") - name.set("Aleksey Mikhailov") - email.set("aleksey.mikhailov@icerockdev.com") - } - developer { - id.set("nrobi144") - name.set("Nagy Robert") - email.set("nagyrobi144@gmail.com") - } - } - - scm { - connection.set("scm:git:ssh://github.com/icerockdev/moko-graphics.git") - developerConnection.set("scm:git:ssh://github.com/icerockdev/moko-graphics.git") - url.set("https://github.com/icerockdev/moko-graphics") - } - } - } -} - - -signing { - val signingKeyId: String? = System.getenv("SIGNING_KEY_ID") - val signingPassword: String? = System.getenv("SIGNING_PASSWORD") - val signingKey: String? = System.getenv("SIGNING_KEY")?.let { base64Key -> - String(Base64.getDecoder().decode(base64Key)) - } - if (signingKeyId != null) { - useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) - sign(publishing.publications) - } -} diff --git a/graphics/build.gradle.kts b/graphics/build.gradle.kts index 5a7ae6b..528e843 100644 --- a/graphics/build.gradle.kts +++ b/graphics/build.gradle.kts @@ -6,12 +6,9 @@ plugins { id("multiplatform-library-convention") id("detekt-convention") id("dev.icerock.mobile.multiplatform.android-manifest") - id("publication-convention") + id("dev.icerock.moko.gradle.publication") } -group = "dev.icerock.moko" -version = libs.versions.mokoGraphicsVersion.get() - dependencies { androidMainImplementation(libs.annotation) } From 993cfd94244f5f021f28f7db53b9eda045ffe02c Mon Sep 17 00:00:00 2001 From: Kolchurin Konstantin Date: Mon, 31 Aug 2026 10:34:37 +0700 Subject: [PATCH 2/2] removed old detekt plugin --- graphics-build-logic/build.gradle.kts | 1 - .../main/kotlin/detekt-convention.gradle.kts | 18 ------------------ graphics/build.gradle.kts | 2 +- sample/mpp-library/build.gradle.kts | 3 +-- 4 files changed, 2 insertions(+), 22 deletions(-) delete mode 100644 graphics-build-logic/src/main/kotlin/detekt-convention.gradle.kts diff --git a/graphics-build-logic/build.gradle.kts b/graphics-build-logic/build.gradle.kts index 8081d65..a6a705c 100644 --- a/graphics-build-logic/build.gradle.kts +++ b/graphics-build-logic/build.gradle.kts @@ -13,5 +13,4 @@ dependencies { api("dev.icerock:mobile-multiplatform:0.14.2") api("org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.0") api("com.android.tools.build:gradle:8.2.2") - api("io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.6") } diff --git a/graphics-build-logic/src/main/kotlin/detekt-convention.gradle.kts b/graphics-build-logic/src/main/kotlin/detekt-convention.gradle.kts deleted file mode 100644 index bd7cc6a..0000000 --- a/graphics-build-logic/src/main/kotlin/detekt-convention.gradle.kts +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright 2021 IceRock MAG Inc. Use of this source code is governed by the Apache 2.0 license. - */ - -import io.gitlab.arturbosch.detekt.Detekt - -plugins { - id("io.gitlab.arturbosch.detekt") -} - -tasks.register("detektWithoutTests") { - group = "verification" - dependsOn(tasks.withType().matching { it.name.contains("Test").not() }) -} - -dependencies { - "detektPlugins"("io.gitlab.arturbosch.detekt:detekt-formatting:1.22.0") -} diff --git a/graphics/build.gradle.kts b/graphics/build.gradle.kts index 528e843..7de2f07 100644 --- a/graphics/build.gradle.kts +++ b/graphics/build.gradle.kts @@ -4,7 +4,7 @@ plugins { id("multiplatform-library-convention") - id("detekt-convention") + id("dev.icerock.moko.gradle.detekt") id("dev.icerock.mobile.multiplatform.android-manifest") id("dev.icerock.moko.gradle.publication") } diff --git a/sample/mpp-library/build.gradle.kts b/sample/mpp-library/build.gradle.kts index a1f257d..910325e 100644 --- a/sample/mpp-library/build.gradle.kts +++ b/sample/mpp-library/build.gradle.kts @@ -5,7 +5,7 @@ plugins { id("com.android.library") id("android-base-convention") - id("detekt-convention") + id("dev.icerock.moko.gradle.detekt") id("org.jetbrains.kotlin.multiplatform") id("dev.icerock.mobile.multiplatform.android-manifest") id("dev.icerock.mobile.multiplatform.ios-framework") @@ -34,4 +34,3 @@ dependencies { android { namespace = "com.icerockdev.library" } -