From 9d6944400c5e1b06fa2e3c77ff81bb27ce822ba1 Mon Sep 17 00:00:00 2001 From: rnentjes Date: Sun, 1 Sep 2024 19:11:15 +0200 Subject: [PATCH] Publish package to gitea --- .gitignore | 1 + .../typed_byte_arrays_js_0_1_0_SNAPSHOT.xml | 8 + .../typed_byte_arrays_jvm_0_1_0_SNAPSHOT.xml | 8 + build.gradle.kts | 155 ++++++++++++++---- 4 files changed, 143 insertions(+), 29 deletions(-) create mode 100644 .idea/artifacts/typed_byte_arrays_js_0_1_0_SNAPSHOT.xml create mode 100644 .idea/artifacts/typed_byte_arrays_jvm_0_1_0_SNAPSHOT.xml diff --git a/.gitignore b/.gitignore index 0e374c9..eeffbfa 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,4 @@ bin/ .DS_Store /web +/gradle.properties diff --git a/.idea/artifacts/typed_byte_arrays_js_0_1_0_SNAPSHOT.xml b/.idea/artifacts/typed_byte_arrays_js_0_1_0_SNAPSHOT.xml new file mode 100644 index 0000000..7019816 --- /dev/null +++ b/.idea/artifacts/typed_byte_arrays_js_0_1_0_SNAPSHOT.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/.idea/artifacts/typed_byte_arrays_jvm_0_1_0_SNAPSHOT.xml b/.idea/artifacts/typed_byte_arrays_jvm_0_1_0_SNAPSHOT.xml new file mode 100644 index 0000000..8adcee0 --- /dev/null +++ b/.idea/artifacts/typed_byte_arrays_jvm_0_1_0_SNAPSHOT.xml @@ -0,0 +1,8 @@ + + + $PROJECT_DIR$/build/libs + + + + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index f744b8b..f5213c0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,9 +1,12 @@ plugins { kotlin("multiplatform") version "2.0.20" + `maven-publish` + signing + id("org.jetbrains.dokka") version "1.5.31" } group = "nl.astraeus" -version = "1.0-SNAPSHOT" +version = "0.1.0-SNAPSHOT" repositories { mavenCentral() @@ -11,51 +14,28 @@ repositories { kotlin { jvm { - kotlin { - jvmToolchain(17) - } - + withJava() } js { - browser { - distribution { - outputDirectory.set(file("$projectDir/web/")) - } - } + browser {} } - sourceSets { - val commonMain by getting { - dependencies { - implementation(kotlin("stdlib")) - } - } - + val commonMain by getting val commonTest by getting { dependencies { implementation(kotlin("test-common")) } } - val jvmMain by getting { - dependencies { - implementation(kotlin("stdlib-jdk8")) - } - } - + val jvmMain by getting val jvmTest by getting { dependencies { implementation(kotlin("test")) } } - val jsMain by getting { - dependencies { - implementation(kotlin("stdlib-js")) - } - } - + val jsMain by getting val jsTest by getting { dependencies { implementation(kotlin("test-js")) @@ -63,3 +43,120 @@ kotlin { } } } + +extra["PUBLISH_GROUP_ID"] = group +extra["PUBLISH_VERSION"] = version +extra["PUBLISH_ARTIFACT_ID"] = name + +// Stub secrets to let the project sync and build without the publication values set up +val signingKeyId: String? by project +val signingPassword: String? by project +val signingSecretKeyRingFile: String? by project + +extra["signing.keyId"] = signingKeyId +extra["signing.password"] = signingPassword +extra["signing.secretKeyRingFile"] = signingSecretKeyRingFile + +val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") +} + +publishing { + repositories { + mavenLocal() + maven { + name = "gitea" + setUrl("https://gitea.astraeus.nl/api/packages/rnentjes/maven") + + credentials() { + val giteaUsername: String? by project + val giteaPassword: String? by project + + username = giteaUsername + password = giteaPassword + } + } + } + + // Configure all publications + publications.withType { + // Stub javadoc.jar artifact + artifact(javadocJar.get()) + + // Provide artifacts information requited by Maven Central + pom { + name.set("typed-byte-arrays") + description.set("Typed byte arrays") + url.set("https://gitea.astraeus.nl/rnentjes/typed-byte-arrays") + + licenses { + license { + name.set("MIT") + url.set("https://opensource.org/licenses/MIT") + } + } + developers { + developer { + id.set("rnentjes") + name.set("Rien Nentjes") + email.set("info@nentjes.com") + } + } + scm { + url.set("https://gitea.astraeus.nl/rnentjes/typed-byte-arrays") + } + } + } +} + +signing { + sign(publishing.publications) +} + +tasks.named("publishJsPublicationToMavenLocal") { + dependsOn(tasks.named("signJvmPublication")) +} + +tasks.named("publishJvmPublicationToMavenLocal") { + dependsOn(tasks.named("signJsPublication")) +} + +tasks.named("publishJvmPublicationToMavenLocal") { + dependsOn(tasks.named("signKotlinMultiplatformPublication")) +} + +tasks.named("publishJsPublicationToMavenLocal") { + dependsOn(tasks.named("signKotlinMultiplatformPublication")) +} + +tasks.named("publishKotlinMultiplatformPublicationToMavenLocal") { + dependsOn(tasks.named("signJvmPublication")) +} + +tasks.named("publishKotlinMultiplatformPublicationToMavenLocal") { + dependsOn(tasks.named("signJsPublication")) +} + +tasks.named("publishJsPublicationToGiteaRepository") { + dependsOn(tasks.named("signJvmPublication")) +} + +tasks.named("publishJvmPublicationToGiteaRepository") { + dependsOn(tasks.named("signJsPublication")) +} + +tasks.named("publishJvmPublicationToGiteaRepository") { + dependsOn(tasks.named("signKotlinMultiplatformPublication")) +} + +tasks.named("publishJsPublicationToGiteaRepository") { + dependsOn(tasks.named("signKotlinMultiplatformPublication")) +} + +tasks.named("publishKotlinMultiplatformPublicationToGiteaRepository") { + dependsOn(tasks.named("signJvmPublication")) +} + +tasks.named("publishKotlinMultiplatformPublicationToGiteaRepository") { + dependsOn(tasks.named("signJsPublication")) +}