/
build.gradle.kts
89 lines (71 loc) · 2.41 KB
/
build.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
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.buildconfig)
id("java-gradle-plugin")
id("maven-publish")
id("signing")
alias(libs.plugins.gradle.publish)
alias(libs.plugins.detekt)
}
repositories {
mavenCentral()
}
dependencies {
compileOnly(kotlin("gradle-plugin"))
compileOnly(kotlin("stdlib"))
}
tasks.withType<JavaCompile>().configureEach {
options.release.set(8)
}
tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs = freeCompilerArgs + "-opt-in=kotlin.contracts.ExperimentalContracts"
}
}
val artifactId: String by project
val pluginId = "$group.$artifactId"
ext["gradle.publish.key"] = property("gradlePublishKey") as String
ext["gradle.publish.secret"] = property("gradlePublishSecret") as String
buildConfig {
packageName.set(pluginId)
buildConfigField("String", "GROUP_ID", "\"$group\"")
buildConfigField("String", "ARTIFACT_ID", "\"$artifactId\"")
buildConfigField("String", "PLUGIN_ID", "\"$pluginId\"")
buildConfigField("String", "VERSION", "\"$version\"")
useKotlinOutput { internalVisibility = true }
}
gradlePlugin {
val publicationUrl: String by project
val publicationScmUrl: String by project
website.set(publicationUrl)
vcsUrl.set(publicationScmUrl)
val resources by plugins.creating {
val publicationDisplayNamePlugin: String by project
val publicationDescriptionPlugin: String by project
val publicationTags: String by project
id = pluginId
implementationClass = "com.goncalossilva.resources.ResourcesPlugin"
displayName = publicationDisplayNamePlugin
description = publicationDescriptionPlugin
tags.set(publicationTags.split(','))
}
}
signing {
// Use `signingKey` and `signingPassword` properties to sign artifacts, if provided.
// Otherwise, default to `signing.keyId`, `signing.password` and `signing.secretKeyRingFile`.
val signingKey: String? by project
val signingPassword: String? by project
if (signingKey != null && signingPassword != null) {
useInMemoryPgpKeys(signingKey, signingPassword)
}
sign(publishing.publications)
}
tasks.named("publish") {
dependsOn("publishPlugins")
}
detekt {
config.setFrom(files("../config/detekt/detekt.yml"))
buildUponDefaultConfig = true
}