/
PublicationMavenCentral.kt
81 lines (75 loc) · 2.78 KB
/
PublicationMavenCentral.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
* Copyright 2017-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
*/
import org.gradle.api.*
import org.gradle.api.file.*
import org.gradle.api.publish.*
import org.gradle.api.publish.maven.*
import org.gradle.kotlin.dsl.*
import org.gradle.plugins.signing.*
fun PublishingExtension.addMavenRepository(project: Project) {
repositories {
maven {
url = project.uri("https://oss.sonatype.org/service/local/staging/deploy/maven2/")
credentials {
username = project.acquireProperty("libs.sonatype.user")
password = project.acquireProperty("libs.sonatype.password")
}
}
}
}
fun MavenPublication.signPublicationIfKeyPresent(project: Project) {
val keyId = project.acquireProperty("libs.sign.key.id")
val signingKey = project.acquireProperty("libs.sign.key.private")
val signingKeyPassphrase = project.acquireProperty("libs.sign.passphrase")
if (!signingKey.isNullOrBlank()) {
project.extensions.configure<SigningExtension>("signing") {
useInMemoryPgpKeys(keyId, signingKey, signingKeyPassphrase)
sign(this@signPublicationIfKeyPresent)
}
}
}
fun PublishingExtension.addMavenMetadata() {
publications.withType(MavenPublication::class) {
pom {
if (!name.isPresent) {
name.set(artifactId)
}
description.set("Kotlin code coverage plugin")
url.set("https://github.com/Kotlin/kotlinx-kover")
licenses {
license {
name.set("The Apache Software License, Version 2.0")
url.set("https://www.apache.org/licenses/LICENSE-2.0.txt")
distribution.set("repo")
}
}
developers {
developer {
id.set("JetBrains")
name.set("JetBrains Team")
organization.set("JetBrains")
organizationUrl.set("https://www.jetbrains.com")
}
}
scm {
url.set("https://github.com/Kotlin/kotlinx-kover")
}
}
}
}
fun MavenPublication.addExtraMavenArtifacts(project: Project, sources: SourceDirectorySet) {
val sourcesJar by project.tasks.creating(org.gradle.jvm.tasks.Jar::class) {
archiveClassifier.set("sources")
from(sources)
}
val javadocJar by project.tasks.creating(org.gradle.jvm.tasks.Jar::class) {
archiveClassifier.set("javadoc")
// contents are deliberately left empty
}
artifact(sourcesJar)
artifact(javadocJar)
}
private fun Project.acquireProperty(name: String): String? {
return project.findProperty(name) as? String ?: System.getenv(name)
}