Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
plugins {
`kotlin-dsl`
}

repositories {
gradlePluginPortal()
maven {
name = "EngineHub Repository"
url = uri("https://maven.enginehub.org/repo/")
}
}

dependencies {
implementation(gradleApi())
implementation(libs.grgit)
implementation(libs.shadow)
implementation(libs.paperweight)

constraints {
val asmVersion = "[${libs.versions.minimumAsm.get()},)"
implementation("org.ow2.asm:asm:$asmVersion") {
because("Need Java 21 support in shadow")
}
implementation("org.ow2.asm:asm-commons:$asmVersion") {
because("Need Java 21 support in shadow")
}
implementation("org.vafer:jdependency:[${libs.versions.minimumJdependency.get()},)") {
because("Need Java 21 support in shadow")
}
}
}
9 changes: 9 additions & 0 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}

rootProject.name = "build-logic"
61 changes: 61 additions & 0 deletions build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import buildlogic.getVersion
import buildlogic.stringyLibs

plugins {
`java-library`
id("buildlogic.common")
id("buildlogic.common-java")
id("io.papermc.paperweight.userdev")
}

paperweight {
injectPaperRepository = false
reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.REOBF_PRODUCTION
}

repositories {
maven {
name = "PaperMC"
url = uri("https://repo.papermc.io/repository/maven-public/")
content {
excludeModule("io.papermc.paper", "dev-bundle")
}
}
maven {
name = "EngineHub Repository"
url = uri("https://maven.enginehub.org/repo/")
content {
excludeModule("io.papermc.paper", "dev-bundle")
}
}
maven {
name = "IntellectualSites"
url = uri("https://repo.intellectualsites.dev/repository/paper-dev-bundles/")
content {
includeModule("io.papermc.paper", "dev-bundle")
}
}
mavenCentral()
afterEvaluate {
killNonEngineHubRepositories()
}
}

dependencies {
implementation(project(":worldedit-bukkit"))
constraints {
//Reduces the amount of libraries Gradle and IntelliJ need to resolve
implementation("net.kyori:adventure-bom") {
version { strictly(stringyLibs.getVersion("adventure").strictVersion) }
because("Ensure a consistent version of adventure is used.")
}
}
}

tasks.named("assemble") {
dependsOn("reobfJar")
}

tasks.named<Javadoc>("javadoc") {
enabled = false
}
71 changes: 71 additions & 0 deletions build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import buildlogic.stringyLibs
import buildlogic.getLibrary

plugins {
id("eclipse")
id("idea")
id("buildlogic.common")
}

tasks
.withType<JavaCompile>()
.matching { it.name == "compileJava" || it.name == "compileTestJava" }
.configureEach {
// TODO: re-enable this-escape when ANTLR suppresses it properly
val disabledLint = listOf(
"processing", "path", "fallthrough", "serial", "overloads", "this-escape",
)
options.release.set(21)
options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" })
options.isDeprecation = true
options.encoding = "UTF-8"
options.compilerArgs.add("-parameters")
options.compilerArgs.add("--add-modules=jdk.incubator.vector")
}

tasks.withType<Test>().configureEach {
useJUnitPlatform {
includeEngines("junit-jupiter", "jqwik")
}
}

dependencies {
"compileOnly"(stringyLibs.getLibrary("jsr305"))
"testImplementation"(platform(stringyLibs.getLibrary("junit-bom")))
"testImplementation"(stringyLibs.getLibrary("junit-jupiter-api"))
"testImplementation"(stringyLibs.getLibrary("junit-jupiter-params"))
"testImplementation"(stringyLibs.getLibrary("jqwik"))
"testImplementation"(platform(stringyLibs.getLibrary("mockito-bom")))
"testImplementation"(stringyLibs.getLibrary("mockito-core"))
"testImplementation"(stringyLibs.getLibrary("mockito-junit-jupiter"))
"testRuntimeOnly"(stringyLibs.getLibrary("junit-jupiter-engine"))
"testRuntimeOnly"(stringyLibs.getLibrary("junit-platform-launcher"))
}

// Java 8 turns on doclint which we fail
tasks.withType<Javadoc>().configureEach {
options.encoding = "UTF-8"
(options as StandardJavadocDocletOptions).apply {
addStringOption("Xdoclint:none", "-quiet")
addStringOption("-add-modules", "jdk.incubator.vector")
addBooleanOption("Xdoclint:-missing", true)
tags(
"apiNote:a:API Note:",
"implSpec:a:Implementation Requirements:",
"implNote:a:Implementation Note:"
)
links(
"https://jd.advntr.dev/api/latest/",
"https://logging.apache.org/log4j/2.x/javadoc/log4j-api/",
"https://www.antlr.org/api/Java/",
"https://jd.papermc.io/paper/1.21.10/",
"https://intellectualsites.github.io/fastasyncworldedit-javadocs/worldedit-core/"
)
docTitle = "${rootProject.name}-${project.description}" + " " + "${rootProject.version}"
}
}

configure<JavaPluginExtension> {
withJavadocJar()
withSourcesJar()
}
54 changes: 54 additions & 0 deletions build-logic/src/main/kotlin/buildlogic.common.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import buildlogic.getLibrary
import buildlogic.stringyLibs
import org.gradle.plugins.ide.idea.model.IdeaModel

group = rootProject.group
version = rootProject.version

configurations.all {
resolutionStrategy {
cacheChangingModulesFor(1, TimeUnit.DAYS)
}
}

plugins.withId("java") {
the<JavaPluginExtension>().toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}

dependencies {
for (conf in listOf("implementation", "api")) {
if (!configurations.names.contains(conf)) {
continue
}
add(conf, platform(stringyLibs.getLibrary("log4j-bom")).map {
val dep = create(it)
dep.because("Mojang provides Log4j")
dep
})
constraints {
add(conf, stringyLibs.getLibrary("guava")) {
version { require("33.3.1-jre") }
because("Mojang provides Guava")
}
add(conf, stringyLibs.getLibrary("gson")) {
version { require("2.11.0") }
because("Mojang provides Gson")
}
add(conf, stringyLibs.getLibrary("fastutil")) {
version { require("8.5.15") }
because("Mojang provides FastUtil")
}
}
}
}

plugins.withId("idea") {
configure<IdeaModel> {
module {
isDownloadSources = true
isDownloadJavadoc = true
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
plugins {
id("java")
id("maven-publish")
id("buildlogic.common-java")
id("signing")
}

ext["internalVersion"] = "$version+${rootProject.ext["gitCommitHash"]}"

val publishingExtension = the<PublishingExtension>()

configure<SigningExtension> {
if (!version.toString().endsWith("-SNAPSHOT")) {
val signingKey: String? by project
val signingPassword: String? by project
useInMemoryPgpKeys(signingKey, signingPassword)
isRequired
sign(publishingExtension.publications)
}
}

publishing {
publications {
register<MavenPublication>("maven") {
afterEvaluate {
versionMapping {
usage("java-api") {
fromResolutionOf("runtimeClasspath")
}
usage("java-runtime") {
fromResolutionResult()
}
}
group = "com.fastasyncworldedit"
artifactId = "${rootProject.name}-${project.description}"
version = "$version"
pom {
name.set("${rootProject.name}-${project.description}" + " " + project.version)
description.set("Blazingly fast Minecraft world manipulation for artists, builders and everyone else.")
url.set("https://github.com/IntellectualSites/FastAsyncWorldEdit")

licenses {
license {
name.set("GNU General Public License, Version 3.0")
url.set("https://www.gnu.org/licenses/gpl-3.0.html")
distribution.set("repo")
}
}

developers {
developer {
id.set("NotMyFault")
name.set("Alexander Brandes")
email.set("contact(at)notmyfault.dev")
organization.set("IntellectualSites")
organizationUrl.set("https://github.com/IntellectualSites")
}
developer {
id.set("SirYwell")
name.set("Hannes Greule")
organization.set("IntellectualSites")
organizationUrl.set("https://github.com/IntellectualSites")
}
developer {
id.set("dordsor21")
name.set("dordsor21")
organization.set("IntellectualSites")
organizationUrl.set("https://github.com/IntellectualSites")
}
}

scm {
url.set("https://github.com/IntellectualSites/FastAsyncWorldEdit")
connection.set("scm:git:https://github.com/IntellectualSites/FastAsyncWorldEdit.git")
developerConnection.set("scm:git:git@github.com:IntellectualSites/FastAsyncWorldEdit.git")
tag.set("${project.version}")
}

issueManagement {
system.set("GitHub")
url.set("https://github.com/IntellectualSites/FastAsyncWorldEdit/issues")
}
}
}
}
}
}
Loading
Loading