Skip to content

Commit

Permalink
Major gradle refactors
Browse files Browse the repository at this point in the history
Get rid of buildSrc, and replace it with version catalog and convention plugins.
Also add missing targets to coroutines and serialization integrations
  • Loading branch information
russell committed Jan 10, 2024
1 parent 5fcbcb1 commit 07ba62a
Show file tree
Hide file tree
Showing 20 changed files with 463 additions and 688 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
- Add alternative APIs to `multiplatform-settings-serialization` that don't require manually passing a serializer (#172)
- Make `SettingsInitializer` public so it's easier to configure custom android.startup initialization or write tests
when using `multiplatform-settings-no-arg`
- Add all supported targets to `multiplatform-settings-coroutines` and `multiplatform-settings-serialization`.
- Modernize gradle and publication config. This shouldn't impact consumers, but please file an issue if you notice
anything missing.

## v1.1.1 *(2023-11-20)* ##

Expand Down
93 changes: 9 additions & 84 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask

/*
* Copyright 2020 Russell Wolf
*
Expand All @@ -17,94 +14,22 @@ import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask
* limitations under the License.
*/

import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension
import org.jetbrains.kotlin.gradle.targets.js.npm.tasks.KotlinNpmInstallTask

plugins {
id("binary-compatibility-validator") version Versions.binaryCompatibilityValidator
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.nexus.publish)
alias(libs.plugins.kotlin.binaryCompatibilityValidator)
}

allprojects {
group = "com.russhwolf"
version = Versions.multiplatformSettings

nexusPublishing {
repositories {
google()
mavenCentral()
}

val emptyJavadocJar by tasks.registering(Jar::class) {
archiveClassifier.set("javadoc")
}

afterEvaluate {
extensions.findByType<PublishingExtension>()?.apply {
repositories {
maven {
url = uri(
if (isReleaseBuild) {
"https://oss.sonatype.org/service/local/staging/deploy/maven2"
} else {
"https://oss.sonatype.org/content/repositories/snapshots"
}
)
credentials {
username = properties["sonatypeUsername"].toString()
password = properties["sonatypePassword"].toString()
}
}
}

publications.withType<MavenPublication>().configureEach {
val publication = this
val javadocJar = tasks.register("${publication.name}JavadocJar", Jar::class) {
archiveClassifier.set("javadoc")
archiveBaseName.set("${archiveBaseName.get()}-${publication.name}")
}
artifact(javadocJar)

pom {
name.set("Multiplatform Settings")
description.set("A Kotlin Multiplatform library for saving simple key-value data")
url.set("https://github.com/russhwolf/multiplatform-settings")

licenses {
license {
name.set("The Apache Software License, Version 2.0")
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
distribution.set("repo")
}
}
developers {
developer {
id.set("russhwolf")
name.set("Russell Wolf")
}
}
scm {
url.set("https://github.com/russhwolf/multiplatform-settings")
}
}
}
}

extensions.findByType<SigningExtension>()?.apply {
val publishing = extensions.findByType<PublishingExtension>() ?: return@apply
val key = properties["signingKey"]?.toString()?.replace("\\n", "\n")
val password = properties["signingPassword"]?.toString()

useInMemoryPgpKeys(key, password)
sign(publishing.publications)
}

tasks.withType<Sign>().configureEach {
onlyIf { isReleaseBuild }
}
sonatype()
}
}

val isReleaseBuild: Boolean
get() = properties.containsKey("signingKey")



apiValidation {
ignoredProjects.add("tests")
}
Expand Down
246 changes: 0 additions & 246 deletions buildSrc/src/main/kotlin/BuildHelpers.kt

This file was deleted.

Loading

0 comments on commit 07ba62a

Please sign in to comment.