-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.gradle.kts
116 lines (111 loc) · 3.01 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
import java.io.File
import java.io.StringWriter
import java.util.Properties
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
group = "com.github.cs124-illinois"
version = "2023.1.0"
plugins {
kotlin("jvm") version "1.8.0"
java
`maven-publish`
id("org.jmailen.kotlinter") version "3.13.0"
checkstyle
id("com.github.sherter.google-java-format") version "0.9"
id("com.github.ben-manes.versions") version "0.44.0"
id("io.gitlab.arturbosch.detekt") version "1.22.0"
}
repositories {
mavenCentral()
maven(url = "https://jitpack.io")
maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")
}
dependencies {
implementation("org.jetbrains.kotlin:kotlin-reflect:1.8.0")
implementation("io.github.classgraph:classgraph:4.8.153")
implementation("io.github.kostaskougios:cloning:1.10.3")
testImplementation("io.kotest:kotest-runner-junit5:5.5.4")
testImplementation("org.slf4j:slf4j-simple:2.0.6")
}
tasks.withType<JavaCompile> {
options.compilerArgs.add("-parameters")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
}
tasks.withType<Test> {
useJUnitPlatform()
enableAssertions = true
tasks.withType<Test> {
useJUnitPlatform()
jvmArgs(
"-ea", "-Xmx1G", "-Xss256k",
"-Dfile.encoding=UTF-8",
"-XX:-OmitStackTraceInFastThrow",
"--add-opens", "java.base/java.util=ALL-UNNAMED"
)
}
}
tasks.dependencyUpdates {
fun String.isNonStable() = !(
listOf("RELEASE", "FINAL", "GA").any { toUpperCase().contains(it) }
|| "^[0-9,.v-]+(-r)?$".toRegex().matches(this)
)
rejectVersionIf { candidate.version.isNonStable() }
gradleReleaseChannel = "current"
}
detekt {
buildUponDefaultConfig = true
}
tasks.check {
dependsOn("detekt")
}
googleJavaFormat {
toolVersion = "1.15.0"
}
tasks.compileKotlin {
dependsOn("createProperties")
}
tasks.compileTestKotlin {
kotlinOptions {
javaParameters = true
}
}
task("createProperties") {
dependsOn(tasks.processResources)
doLast {
val properties = Properties().also {
it["version"] = project.version.toString()
}
File(projectDir, "src/main/resources/edu.illinois.cs.cs125.jenisol.core.version")
.printWriter().use { printWriter ->
printWriter.print(
StringWriter().also { properties.store(it, null) }.buffer.toString()
.lines().drop(1).joinToString(separator = "\n").trim()
)
}
}
}
tasks {
val sourcesJar by creating(Jar::class) {
archiveClassifier.set("sources")
from(sourceSets["main"].allSource)
}
artifacts {
add("archives", sourcesJar)
}
}
java {
withSourcesJar()
}
publishing {
publications {
create<MavenPublication>("jenisol") {
from(components["java"])
}
}
}
kotlinter {
disabledRules = arrayOf("filename")
}