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"))
+}