1+ import org.gradle.api.publish.maven.MavenPublication
2+ import org.gradle.api.tasks.bundling.Jar
3+ import org.gradle.kotlin.dsl.`maven-publish`
4+ import org.gradle.kotlin.dsl.signing
5+ import java.util.*
6+
7+ plugins {
8+ `maven- publish`
9+ signing
10+ }
11+ // Stub secrets to let the project sync and build without the publication values set up
12+ ext[" signing.keyId" ] = null
13+ ext[" signing.password" ] = null
14+ ext[" signing.secretKeyRingFile" ] = null
15+ ext[" ossrhUsername" ] = null
16+ ext[" ossrhPassword" ] = null
17+
18+ // Grabbing secrets from local.properties file or from environment variables, which could be used on CI
19+ val secretPropsFile = project.rootProject.file(" local.properties" )
20+ if (secretPropsFile.exists()) {
21+ secretPropsFile.reader().use {
22+ Properties ().apply {
23+ load(it)
24+ }
25+ }.onEach { (name, value) ->
26+ ext[name.toString()] = value
27+ }
28+ } else {
29+ ext[" signing.keyId" ] = System .getenv(" SIGNING_KEY_ID" )
30+ ext[" signing.password" ] = System .getenv(" SIGNING_PASSWORD" )
31+ ext[" signing.secretKeyRingFile" ] = System .getenv(" SIGNING_SECRET_KEY_RING_FILE" )
32+ ext[" ossrhUsername" ] = System .getenv(" OSSRH_USERNAME" )
33+ ext[" ossrhPassword" ] = System .getenv(" OSSRH_PASSWORD" )
34+ }
35+ ext[" signing.secretKeyRingFile" ] = " ../${ext[" signing.secretKeyRingFile" ]} " // path from module
36+ val javadocJar by tasks.registering(Jar ::class ) {
37+ archiveClassifier.set(" javadoc" )
38+ }
39+ fun getExtraString (name : String ) = ext[name]?.toString()
40+
41+ publishing {
42+ // Configure maven central repository
43+ repositories {
44+ maven {
45+ name = " sonatype"
46+ setUrl(" https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/" )
47+ credentials {
48+ username = getExtraString(" ossrhUsername" )
49+ password = getExtraString(" ossrhPassword" )
50+ }
51+ }
52+ }
53+ // Configure all publications
54+ publications.withType<MavenPublication > {
55+ // Stub javadoc.jar artifact
56+ artifact(javadocJar.get())
57+ // Provide artifacts information requited by Maven Central
58+ pom {
59+ name.set(" Kronos Multiplatform Library" )
60+ description.set(" Kotlin Multiplatform SNTP library" )
61+ url.set(" https://github.com/softartdev/Kronos-Multiplatform" )
62+
63+ licenses {
64+ license {
65+ name.set(" MIT" )
66+ url.set(" https://opensource.org/licenses/MIT" )
67+ }
68+ }
69+ developers {
70+ developer {
71+ id.set(" softartdev" )
72+ name.set(" Artur Babichev" )
73+ email.set(" artik222012@gmail.com" )
74+ }
75+ }
76+ scm {
77+ url.set(" https://github.com/softartdev/Kronos-Multiplatform" )
78+ }
79+ }
80+ }
81+ }
82+
83+ // Signing artifacts. Signing.* extra properties values will be used
84+ signing {
85+ sign(publishing.publications)
86+ }
0 commit comments