-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.gradle.kts
127 lines (108 loc) · 3.32 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
plugins {
// https://kotlinlang.org/
kotlin("jvm") version "2.0.0"
// https://kotlinlang.org/docs/serialization.html
kotlin("plugin.serialization") version "2.0.0"
// https://github.com/johnrengelman/shadow
id("com.github.johnrengelman.shadow") version "8.1.1"
// https://github.com/jpenilla/run-paper
id("xyz.jpenilla.run-paper") version "2.3.0"
// https://github.com/jlleitschuh/ktlint-gradle
id("org.jlleitschuh.gradle.ktlint") version "12.1.1"
// https://detekt.dev/
id("io.gitlab.arturbosch.detekt") version "1.23.3"
}
val version: String by project
val group: String by project
val ktlintVersion: String by project
val minecraftVersion: String by project
val paperApiRevision: String by project
val kordexVersion: String by project
val tegralVersion: String by project
val kamlVersion: String by project
val ktorVersion: String by project
val hopliteVersion: String by project
val jvmVersion: String by project
val kotlinLanguageVersion: String by project
val kotlinApiVersion: String by project
project.group = group
project.version = version
repositories {
mavenCentral()
gradlePluginPortal()
maven {
name = "PaperMC"
url = uri("https://papermc.io/repo/repository/maven-public/")
}
maven {
name = "Kotlin Discord"
url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots")
}
maven {
name = "Jitpack"
url = uri("https://jitpack.io")
}
}
dependencies {
// Paper plugin development API.
compileOnly("io.papermc.paper:paper-api:$minecraftVersion-$paperApiRevision-SNAPSHOT")
// Config library that provides nice parsing error descriptions.
implementation("com.sksamuel.hoplite:hoplite-core:$hopliteVersion")
implementation("com.sksamuel.hoplite:hoplite-yaml:$hopliteVersion")
// Library that supports loading and (more importantly) saving to YAML files.
implementation("com.charleskorn.kaml:kaml:$kamlVersion")
// Library for Discord bots.
implementation("com.kotlindiscord.kord.extensions:kord-extensions:$kordexVersion")
// Lexer library that supports regex.
implementation("guru.zoroark.tegral:tegral-niwen-lexer:$tegralVersion")
}
ktlint {
version.set(ktlintVersion)
}
detekt {
config.from("config/detekt/detekt.yml")
buildUponDefaultConfig = true
toolVersion = "1.23.6"
}
tasks {
compileKotlin {
kotlinOptions {
jvmTarget = jvmVersion
apiVersion = kotlinApiVersion
languageVersion = kotlinLanguageVersion
freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn")
}
}
processResources {
filesMatching("plugin.yml") {
expand(
"version" to version,
)
}
}
jar.configure {
onlyIf { false }
}
shadowJar {
archiveBaseName.set(rootProject.name)
archiveClassifier.set("")
archiveVersion.set(rootProject.version.toString())
mergeServiceFiles()
}
build {
dependsOn(shadowJar)
}
runServer {
val minecraftVersion: String by project
this.minecraftVersion(minecraftVersion)
}
detekt.configure {
mustRunAfter(ktlintFormat)
}
create("runChecks") {
dependsOn(ktlintFormat, detekt)
}
clean {
delete("build")
}
}