-
-
Notifications
You must be signed in to change notification settings - Fork 151
Expand file tree
/
Copy pathadventure.common-conventions.gradle.kts
More file actions
127 lines (115 loc) · 3.56 KB
/
adventure.common-conventions.gradle.kts
File metadata and controls
127 lines (115 loc) · 3.56 KB
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
import com.adarshr.gradle.testlogger.theme.ThemeType
import com.diffplug.gradle.spotless.FormatExtension
import me.champeau.jmh.JMHPlugin
import me.champeau.jmh.JmhParameters
import net.ltgt.gradle.errorprone.errorprone
plugins {
id("adventure.base-conventions")
id("net.kyori.indra.crossdoc")
id("net.kyori.indra")
id("net.kyori.indra.checkstyle")
id("net.kyori.indra.licenser.spotless")
id("com.adarshr.test-logger")
id("com.diffplug.eclipse.apt")
id("net.ltgt.errorprone")
jacoco
}
// expose version catalog
val libs = extensions.getByType(org.gradle.accessors.dm.LibrariesForLibs::class)
testlogger {
theme = ThemeType.MOCHA_PARALLEL
showPassed = false
}
plugins.withId("me.champeau.jmh") {
extensions.configure(JmhParameters::class) {
jmhVersion = libs.versions.jmh.get()
}
tasks.named("compileJmhJava") {
// avoid implicit task dependencies
dependsOn(tasks.compileTestJava, tasks.processTestResources)
}
tasks.named(JMHPlugin.getJMH_TASK_COMPILE_GENERATED_CLASSES_NAME(), JavaCompile::class) {
classpath += configurations.getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME).incoming.files
}
}
configurations {
testCompileClasspath {
exclude(group = "junit") // brought in by google's libs
}
}
dependencies {
errorprone(libs.errorprone)
annotationProcessor(libs.contractValidator)
api(platform(project(":adventure-bom")))
checkstyle(libs.stylecheck)
testImplementation(libs.guava.testlib)
testImplementation(libs.truth)
testImplementation(libs.truth.java8)
testImplementation(platform(libs.junit.bom))
testImplementation(libs.junit.api)
testImplementation(libs.junit.engine)
testImplementation(libs.junit.params)
testRuntimeOnly(libs.junit.launcher)
}
spotless {
fun FormatExtension.applyCommon() {
trimTrailingWhitespace()
endWithNewline()
leadingTabsToSpaces(2)
}
java {
importOrderFile(rootProject.file(".spotless/kyori.importorder"))
removeUnusedImports()
applyCommon()
}
kotlinGradle {
applyCommon()
}
}
val ADVENTURE_PREFIX = "adventure-"
indraCrossdoc {
baseUrl().set(providers.gradleProperty("javadocPublishRoot"))
nameBasedDocumentationUrlProvider {
projectNamePrefix = ADVENTURE_PREFIX
}
}
tasks {
javadoc {
val options = options as? StandardJavadocDocletOptions ?: return@javadoc
options.tags(
"obsolete:a:Obsolete",
"sinceMinecraft:a:Since Minecraft:",
"obsoleteSinceMinecraft:a:Obsolete since Minecraft",
)
}
jacocoTestReport {
dependsOn(test)
}
withType(JavaCompile::class).configureEach {
options.errorprone {
disable("InvalidBlockTag") // we use custom block tags
disable("InlineMeSuggester") // we don't use errorprone annotations
disable("ReferenceEquality") // lots of comparison against EMPTY objects
disable("CanIgnoreReturnValueSuggester") // suggests errorprone annotation, not JB Contract annotation
}
options.compilerArgs.add("-Xlint:all")
options.compilerArgs.add("-Xlint:-processing") // unclaimed ap warnings are not needed
options.compilerArgs.add("-Xlint:-serial") // nobody cares about serialization
}
}
if (group != "net.kyori") {
fun Configuration.addCapabilities() {
outgoing {
capability("$group:${project.name}:$version")
capability("net.kyori:${project.name}:$version")
}
}
afterEvaluate {
configurations {
named("apiElements") { addCapabilities() }
named("runtimeElements") { addCapabilities() }
named("sourcesElements") { addCapabilities() }
named("javadocElements") { addCapabilities() }
}
}
}