/
mockk-publishing.gradle.kts
101 lines (85 loc) · 3.13 KB
/
mockk-publishing.gradle.kts
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package buildsrc.convention
import buildsrc.config.createMockKPom
import buildsrc.config.credentialsAction
plugins {
`maven-publish`
signing
}
val sonatypeRepositoryCredentials: Provider<Action<PasswordCredentials>> =
providers.credentialsAction("ossrh")
val sonatypeRepositoryReleaseUrl: Provider<String> = provider {
if (version.toString().endsWith("SNAPSHOT")) {
"https://oss.sonatype.org/content/repositories/snapshots/"
} else {
"https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}
}
val signingKeyId: Provider<String> =
providers.gradleProperty("signing.keyId")
val signingKey: Provider<String> =
providers.gradleProperty("signing.key")
val signingPassword: Provider<String> =
providers.gradleProperty("signing.password")
val signingSecretKeyRingFile: Provider<String> =
providers.gradleProperty("signing.secretKeyRingFile")
val ossrhUsername: Provider<String> =
providers.gradleProperty("ossrhUsername")
val ossrhPassword: Provider<String> =
providers.gradleProperty("ossrhPassword")
tasks.withType<AbstractPublishToMaven>().configureEach {
// Gradle warns about some signing tasks using publishing task outputs without explicit
// dependencies. Here's a quick fix.
dependsOn(tasks.withType<Sign>())
mustRunAfter(tasks.withType<Sign>())
doLast {
logger.lifecycle("[task: ${name}] ${publication.groupId}:${publication.artifactId}:${publication.version}")
}
}
val mavenName: String by project.extra
val mavenDescription: String by project.extra
val localrepo: String by project
publishing {
repositories {
// publish to local dir, for testing
maven(rootProject.layout.projectDirectory.dir(localrepo)) {
name = "LocalRepo"
}
/*maven {
url = uri(sonatypeRepositoryReleaseUrl)
credentials {
username = ossrhUsername.get()
password = ossrhPassword.get()
}
}*/
}
// Configure for Android libraries
publications {
if (project.extensions.findByName("android") != null) {
register<MavenPublication>("release") {
afterEvaluate {
from(components["release"])
}
}
}
}
publications.withType<MavenPublication>().configureEach {
createMockKPom {
name.set(provider { mavenName })
description.set(provider { mavenDescription })
}
artifact(tasks.provider<Jar>("javadocJar"))
if (signingKeyId.isPresent() && signingKey.isPresent() && signingPassword.isPresent()) {
signing.sign(this)
}
}
}
signing {
if (signingKeyId.isPresent() && signingKey.isPresent() && signingPassword.isPresent()) {
logger.debug("[${project.displayName}] Signing is enabled")
useInMemoryPgpKeys(signingKeyId.get(), signingKey.get(), signingPassword.get())
}
}
// workaround for https://github.com/gradle/gradle/issues/16543
inline fun <reified T : Task> TaskContainer.provider(taskName: String): Provider<T> =
providers.provider { taskName }
.flatMap { named<T>(it) }