From 21627551f2c76d8b67f1c0570f8fca781c8137d5 Mon Sep 17 00:00:00 2001 From: Adam <897017+aSemy@users.noreply.github.com> Date: Tue, 7 Jun 2022 00:33:48 +0200 Subject: [PATCH 1/2] still mucking about, trying to get gradle publishing working properly --- build.gradle.kts | 2 +- .../convention/maven-publish.gradle.kts | 86 ++++++++++++------- gradle/libs.versions.toml | 8 +- 3 files changed, 58 insertions(+), 38 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index cd5b625d..d5b1326e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,6 @@ import buildsrc.config.excludeGeneratedGradleDsl plugins { - base idea id("me.qoomon.git-versioning") id("org.jetbrains.kotlinx.kover") @@ -27,6 +26,7 @@ tasks.wrapper { distributionType = Wrapper.DistributionType.ALL } + idea { module { isDownloadSources = true diff --git a/buildSrc/src/main/kotlin/buildsrc/convention/maven-publish.gradle.kts b/buildSrc/src/main/kotlin/buildsrc/convention/maven-publish.gradle.kts index d9377ce1..3d94e85a 100644 --- a/buildSrc/src/main/kotlin/buildsrc/convention/maven-publish.gradle.kts +++ b/buildSrc/src/main/kotlin/buildsrc/convention/maven-publish.gradle.kts @@ -36,27 +36,41 @@ val signingSecretKeyRingFile: Provider = providers.gradleProperty("signing.secretKeyRingFile") -val javadocJarStub by tasks.registering(Jar::class) { - group = JavaBasePlugin.DOCUMENTATION_GROUP - description = "Stub javadoc.jar artifact (required by Maven Central)" - archiveClassifier.set("javadoc") -} - tasks.withType().configureEach { // Gradle warns about some signing tasks using publishing task outputs without explicit // dependencies. I'm not going to go through them all and fix them, so here's a quick fix. dependsOn(tasks.withType()) + doLast { + logger.lifecycle("[${this.name}] ${project.group}:${project.name}:${project.version}") + } +} + + +signing { if (sonatypeRepositoryCredentials.isPresent()) { - dependsOn(javadocJarStub) + if (signingKeyId.isPresent() && signingKey.isPresent() && signingPassword.isPresent()) { + useInMemoryPgpKeys(signingKeyId.get(), signingKey.get(), signingPassword.get()) + } else { + useGpgCmd() + } } +} - doLast { - logger.lifecycle("[${this.name}] ${project.group}:${project.name}:${project.version}") + +afterEvaluate { + // Register signatures afterEvaluate, otherwise the signing plugin creates the signing tasks + // too early, before all the publications are added. + // Use .all { }, not .configureEach { }, otherwise the signing plugin doesn't create the tasks + // soon enough. + publishing.publications.withType().all { + signing.sign(this) + logger.lifecycle("configuring signature for publication ${this.name}") } } +val javadocJarStub = javadocStubTask() publishing { if (sonatypeRepositoryCredentials.isPresent()) { @@ -65,11 +79,10 @@ publishing { name = "sonatype" credentials(sonatypeRepositoryCredentials.get()) } - // publish to local dir, for testing - // maven { - // name = "maven-internal" - // url = uri(rootProject.layout.buildDirectory.dir("maven-internal")) - // } +// // publish to local dir, for testing +// maven(rootProject.layout.buildDirectory.dir("maven-internal")) { +// name = "maven-internal" +// } } publications.withType().configureEach { createKxsTsGenPom() @@ -79,29 +92,14 @@ publishing { } -signing { - if (sonatypeRepositoryCredentials.isPresent()) { - if (signingKeyId.isPresent() && signingKey.isPresent() && signingPassword.isPresent()) { - useInMemoryPgpKeys(signingKeyId.get(), signingKey.get(), signingPassword.get()) - } else { - useGpgCmd() - } - - // sign all publications - sign(publishing.publications) - sign(javadocJarStub.get()) - } -} - - -plugins.withType(KotlinMultiplatformPlugin::class).configureEach { +plugins.withType().configureEach { publishing.publications.withType().configureEach { - artifact(javadocJarStub) +// artifact(javadocJarStub) } } -plugins.withType(JavaPlugin::class).configureEach { +plugins.withType().configureEach { afterEvaluate { if (!isKotlinMultiplatformJavaEnabled()) { publishing.publications.create("mavenJava") { @@ -113,8 +111,30 @@ plugins.withType(JavaPlugin::class).configureEach { } -plugins.withType(JavaPlatformPlugin::class).configureEach { +plugins.withType().configureEach { +// val javadocJarStub = javadocStubTask() publishing.publications.create("mavenJavaPlatform") { from(components["javaPlatform"]) +// artifact(javadocJarStub) } } + + +fun Project.javadocStubTask(): Jar { + + // use creating, not registering, because the signing plugin sucks + val javadocJarStub by tasks.creating(Jar::class) { + group = JavaBasePlugin.DOCUMENTATION_GROUP + description = "Stub javadoc.jar artifact (required by Maven Central)" + archiveClassifier.set("javadoc") + } + + val signingTasks = signing.sign(javadocJarStub) + + tasks.withType().all { + dependsOn(javadocJarStub) + signingTasks.forEach { dependsOn(it) } + } + + return javadocJarStub +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 79c5eec3..fbdb1dc4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -43,10 +43,6 @@ kotlinx-serialization-cbor = { group = "org.jetbrains.kotlinx", name = "kotlinx- okio-bom = { group = "com.squareup.okio", name = "okio-bom", version.ref = "okio" } okio-core = { group = "com.squareup.okio", name = "okio" } -kotlinx-kover-gradlePlugin = { group = "org.jetbrains.kotlinx", name = "kover", version.ref = "kotlinx-kover" } - -gradleNodePlugin = { group = "com.github.node-gradle", name = "gradle-node-plugin", version.ref = "gradleNodePlugin" } - classgraph = { group = "io.github.classgraph", name = "classgraph", version.ref = "classgraph" } kotlinProcess = { group = "com.github.pgreze", name = "kotlin-process", version.ref = "kotlinProcess" } @@ -76,6 +72,10 @@ kotlinx-knit-gradlePlugin = { group = "org.jetbrains.kotlinx", name = "kotlinx-k gitVersioningPlugin = { group = "me.qoomon", name = "gradle-git-versioning-plugin", version.ref = "gitVersioningPlugin" } +gradleNodePlugin = { group = "com.github.node-gradle", name = "gradle-node-plugin", version.ref = "gradleNodePlugin" } + +kotlinx-kover-gradlePlugin = { group = "org.jetbrains.kotlinx", name = "kover", version.ref = "kotlinx-kover" } + [bundles] [plugins] From d786f9e9498be3f4b2c459ff032b74bcd374bd5c Mon Sep 17 00:00:00 2001 From: Adam <897017+aSemy@users.noreply.github.com> Date: Tue, 7 Jun 2022 00:40:10 +0200 Subject: [PATCH 2/2] fix maven central badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bd2b234..b2e8ee38 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ [![Status](https://img.shields.io/badge/status-proof--of--concept-blueviolet?style=flat-square)](https://github.com/adamko-dev/kotlinx-serialization-typescript-generator#status) [![GitHub license](https://img.shields.io/github/license/adamko-dev/kotlinx-serialization-typescript-generator?style=flat-square)](https://github.com/adamko-dev/kotlinx-serialization-typescript-generator/blob/main/LICENSE) -[![Maven Central](https://img.shields.io/maven-central/v/dev.adamko.txstsgen/kxs-ts-gen-core?style=flat-square)](https://search.maven.org/search?q=g:dev.adamko.kxstsgen) +[![Maven Central](https://img.shields.io/maven-central/v/dev.adamko.kxstsgen/kxs-ts-gen-core?color=%234c1&style=flat-square)](https://search.maven.org/search?q=g:dev.adamko.kxstsgen) [![](https://jitpack.io/v/adamko-dev/kotlinx-serialization-typescript-generator.svg?style=flat-square)](https://jitpack.io/#adamko-dev/kotlinx-serialization-typescript-generator) # Kotlinx Serialization TypeScript Generator