/* * * Copyright (c) 2021 Shabinder Singh * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see . */ apply plugin: 'maven' apply plugin: 'maven-publish' apply plugin: 'signing' apply plugin: 'org.jetbrains.dokka' dokka { impliedPlatforms = ["Common"] // This will force platform tags for all non-common sources e.g. "JVM" kotlinTasks { // dokka fails to retrieve sources from MPP-tasks so they must be set empty to avoid exception // use sourceRoot instead (see below) [] } packageOptions { prefix = "com.willowtreeapps.fuzzywuzzy" suppress = true } sourceRoot { // assuming there is only a single source dir... path = kotlin.sourceSets.commonMain.kotlin.srcDirs[0] platforms = ["Common"] } if (kotlin.sourceSets.getNames().contains("jvmMain")) { sourceRoot { // assuming there is only a single source dir... path = kotlin.sourceSets.jvmMain.kotlin.srcDirs[0] platforms = ["JVM"] } } if (kotlin.sourceSets.getNames().contains("jsMain")) { sourceRoot { // assuming there is only a single source dir... path = kotlin.sourceSets.jsMain.kotlin.srcDirs[0] platforms = ["js"] } } if (kotlin.sourceSets.getNames().contains("nativeMain")) { sourceRoot { // assuming there is only a single source dir... path = kotlin.sourceSets.nativeMain.kotlin.srcDirs[0] platforms = ["native"] } } } def isReleaseBuild() { return VERSION_NAME.contains("SNAPSHOT") == false } def getReleaseRepositoryUrl() { return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" } def getSnapshotRepositoryUrl() { return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL : "https://oss.sonatype.org/content/repositories/snapshots/" } def getRepositoryUsername() { return hasProperty('SONATYPE_NEXUS_USERNAME') ? SONATYPE_NEXUS_USERNAME : "" } def getRepositoryPassword() { return hasProperty('SONATYPE_NEXUS_PASSWORD') ? SONATYPE_NEXUS_PASSWORD : "" } task emptySourcesJar(type: Jar) { classifier = 'sources' } task javadocsJar(type: Jar, dependsOn: dokka) { classifier = 'javadoc' from dokka.outputDirectory } signing { required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } sign(publishing.publications) } publishing { publications.all { artifact javadocsJar pom.withXml { def root = asNode() root.children().last() + { resolveStrategy = Closure.DELEGATE_FIRST description POM_DESCRIPTION name POM_NAME url POM_URL licenses { license { name POM_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } } } afterEvaluate { publications.getByName('kotlinMultiplatform') { // Source jars are only created for platforms, not the common artifact. artifact emptySourcesJar } } repositories { maven { url isReleaseBuild() ? getReleaseRepositoryUrl() : getSnapshotRepositoryUrl() credentials { username getRepositoryUsername() password getRepositoryPassword() } } maven { name 'test' url "file://${rootProject.buildDir}/localMaven" } } }