2023-12-22 16:51:19 +01:00
|
|
|
plugins {
|
|
|
|
`java-library`
|
|
|
|
`maven-publish`
|
|
|
|
idea // Paper
|
|
|
|
}
|
|
|
|
|
|
|
|
java {
|
|
|
|
withSourcesJar()
|
|
|
|
withJavadocJar()
|
|
|
|
}
|
|
|
|
|
|
|
|
val annotationsVersion = "24.0.1"
|
|
|
|
val bungeeCordChatVersion = "1.20-R0.1"
|
|
|
|
val adventureVersion = "4.14.0"
|
|
|
|
val slf4jVersion = "2.0.9"
|
|
|
|
val log4jVersion = "2.17.1"
|
|
|
|
val apiAndDocs: Configuration by configurations.creating {
|
|
|
|
attributes {
|
|
|
|
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
|
|
|
|
attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.EXTERNAL))
|
|
|
|
attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.SOURCES))
|
|
|
|
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
configurations.api {
|
|
|
|
extendsFrom(apiAndDocs)
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
// api dependencies are listed transitively to API consumers
|
|
|
|
api("com.google.guava:guava:32.1.2-jre")
|
|
|
|
api("com.google.code.gson:gson:2.10.1")
|
|
|
|
// Paper start - adventure
|
|
|
|
api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.14") {
|
|
|
|
exclude("com.google.guava", "guava")
|
|
|
|
}
|
|
|
|
// Paper - adventure
|
|
|
|
api("org.yaml:snakeyaml:2.2")
|
|
|
|
api("org.joml:joml:1.10.5")
|
|
|
|
// Paper start
|
|
|
|
api("com.googlecode.json-simple:json-simple:1.1.1") {
|
|
|
|
isTransitive = false // includes junit
|
|
|
|
}
|
|
|
|
api("it.unimi.dsi:fastutil:8.5.6")
|
|
|
|
apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
|
|
|
|
apiAndDocs("net.kyori:adventure-api")
|
|
|
|
apiAndDocs("net.kyori:adventure-text-minimessage")
|
|
|
|
apiAndDocs("net.kyori:adventure-text-serializer-gson")
|
|
|
|
apiAndDocs("net.kyori:adventure-text-serializer-legacy")
|
|
|
|
apiAndDocs("net.kyori:adventure-text-serializer-plain")
|
|
|
|
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
|
|
|
api("org.apache.logging.log4j:log4j-api:$log4jVersion")
|
|
|
|
api("org.slf4j:slf4j-api:$slf4jVersion")
|
|
|
|
|
|
|
|
implementation("org.ow2.asm:asm:9.5")
|
|
|
|
implementation("org.ow2.asm:asm-commons:9.5")
|
|
|
|
// Paper end
|
|
|
|
|
|
|
|
api("org.apache.maven:maven-resolver-provider:3.9.6") // Paper - make API dependency for Paper Plugins
|
|
|
|
compileOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18")
|
|
|
|
compileOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18")
|
|
|
|
|
|
|
|
val annotations = "org.jetbrains:annotations:$annotationsVersion" // Paper - we don't want Java 5 annotations...
|
|
|
|
compileOnly(annotations)
|
|
|
|
testCompileOnly(annotations)
|
|
|
|
|
|
|
|
// Paper start - add checker
|
|
|
|
val checkerQual = "org.checkerframework:checker-qual:3.33.0"
|
|
|
|
compileOnlyApi(checkerQual)
|
|
|
|
testCompileOnly(checkerQual)
|
|
|
|
// Paper end
|
|
|
|
|
2024-01-01 17:17:59 +01:00
|
|
|
api("com.mojang:brigadier:1.0.18")
|
|
|
|
|
2023-12-22 16:51:19 +01:00
|
|
|
testImplementation("org.apache.commons:commons-lang3:3.12.0")
|
|
|
|
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
|
|
|
|
testImplementation("org.hamcrest:hamcrest:2.2")
|
|
|
|
testImplementation("org.mockito:mockito-core:5.5.0")
|
|
|
|
testImplementation("org.ow2.asm:asm-tree:9.5")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Paper start
|
|
|
|
val generatedApiPath: java.nio.file.Path = rootProject.projectDir.toPath().resolve("paper-api-generator/generated")
|
|
|
|
idea {
|
|
|
|
module {
|
|
|
|
generatedSourceDirs.add(generatedApiPath.toFile())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sourceSets {
|
|
|
|
main {
|
|
|
|
java {
|
|
|
|
srcDir(generatedApiPath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Paper end
|
|
|
|
|
|
|
|
configure<PublishingExtension> {
|
|
|
|
publications.create<MavenPublication>("maven") {
|
|
|
|
from(components["java"])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
val generateApiVersioningFile by tasks.registering {
|
|
|
|
inputs.property("version", project.version)
|
|
|
|
val pomProps = layout.buildDirectory.file("pom.properties")
|
|
|
|
outputs.file(pomProps)
|
|
|
|
val projectVersion = project.version
|
|
|
|
doLast {
|
|
|
|
pomProps.get().asFile.writeText("version=$projectVersion")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tasks.jar {
|
|
|
|
from(generateApiVersioningFile.map { it.outputs.files.singleFile }) {
|
|
|
|
into("META-INF/maven/${project.group}/${project.name}")
|
|
|
|
}
|
|
|
|
manifest {
|
|
|
|
attributes(
|
|
|
|
"Automatic-Module-Name" to "org.bukkit"
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tasks.withType<Javadoc> {
|
|
|
|
val options = options as StandardJavadocDocletOptions
|
|
|
|
options.overview = "src/main/javadoc/overview.html"
|
|
|
|
options.use()
|
|
|
|
options.isDocFilesSubDirs = true
|
|
|
|
options.links(
|
|
|
|
"https://guava.dev/releases/32.1.2-jre/api/docs/",
|
|
|
|
"https://javadoc.io/doc/org.yaml/snakeyaml/2.2/",
|
|
|
|
"https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations
|
|
|
|
// "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // Paper - don't link to bungee chat
|
|
|
|
// Paper start - add missing javadoc links
|
|
|
|
"https://javadoc.io/doc/org.joml/joml/1.10.5/index.html",
|
|
|
|
"https://www.javadoc.io/doc/com.google.code.gson/gson/2.10.1",
|
|
|
|
// Paper end
|
|
|
|
// Paper start
|
|
|
|
"https://jd.advntr.dev/api/$adventureVersion/",
|
|
|
|
"https://jd.advntr.dev/text-minimessage/$adventureVersion/",
|
|
|
|
"https://jd.advntr.dev/text-serializer-gson/$adventureVersion/",
|
|
|
|
"https://jd.advntr.dev/text-serializer-legacy/$adventureVersion/",
|
|
|
|
"https://jd.advntr.dev/text-serializer-plain/$adventureVersion/",
|
|
|
|
"https://jd.advntr.dev/text-logger-slf4j/$adventureVersion/",
|
|
|
|
"https://javadoc.io/doc/org.slf4j/slf4j-api/$slf4jVersion/",
|
|
|
|
"https://javadoc.io/doc/org.apache.logging.log4j/log4j-api/$log4jVersion/",
|
|
|
|
// Paper end
|
|
|
|
"https://javadoc.io/doc/org.apache.maven.resolver/maven-resolver-api/1.7.3", // Paper
|
|
|
|
)
|
|
|
|
options.tags("apiNote:a:API Note:")
|
|
|
|
|
|
|
|
inputs.files(apiAndDocs).ignoreEmptyDirectories().withPropertyName(apiAndDocs.name + "-configuration")
|
|
|
|
doFirst {
|
|
|
|
options.addStringOption(
|
|
|
|
"sourcepath",
|
|
|
|
apiAndDocs.resolvedConfiguration.files.joinToString(separator = File.pathSeparator, transform = File::getPath)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
// workaround for https://github.com/gradle/gradle/issues/4046
|
|
|
|
inputs.dir("src/main/javadoc").withPropertyName("javadoc-sourceset")
|
|
|
|
doLast {
|
|
|
|
copy {
|
|
|
|
from("src/main/javadoc") {
|
|
|
|
include("**/doc-files/**")
|
|
|
|
}
|
|
|
|
into("build/docs/javadoc")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
tasks.test {
|
|
|
|
useJUnitPlatform()
|
|
|
|
}
|
|
|
|
|
|
|
|
// Paper start - compile tests with -parameters for better junit parameterized test names
|
|
|
|
tasks.compileTestJava {
|
|
|
|
options.compilerArgs.add("-parameters")
|
|
|
|
}
|
|
|
|
// Paper end
|
|
|
|
|
|
|
|
// Paper start
|
|
|
|
val scanJar = tasks.register("scanJarForBadCalls", io.papermc.paperweight.tasks.ScanJarForBadCalls::class) {
|
|
|
|
badAnnotations.add("Lio/papermc/paper/annotation/DoNotUse;")
|
|
|
|
jarToScan.set(tasks.jar.flatMap { it.archiveFile })
|
|
|
|
classpath.from(configurations.compileClasspath)
|
|
|
|
}
|
|
|
|
tasks.check {
|
|
|
|
dependsOn(scanJar)
|
|
|
|
}
|
|
|
|
// Paper end
|
|
|
|
// Paper start
|
|
|
|
val scanJarForOldGeneratedCode = tasks.register("scanJarForOldGeneratedCode", io.papermc.paperweight.tasks.ScanJarForOldGeneratedCode::class) {
|
|
|
|
mcVersion.set(providers.gradleProperty("mcVersion"))
|
|
|
|
annotation.set("Lio/papermc/paper/generated/GeneratedFrom;")
|
|
|
|
jarToScan.set(tasks.jar.flatMap { it.archiveFile })
|
|
|
|
classpath.from(configurations.compileClasspath)
|
|
|
|
}
|
|
|
|
tasks.check {
|
|
|
|
dependsOn(scanJarForOldGeneratedCode)
|
|
|
|
}
|
|
|
|
// Paper end
|