plugins { java `maven-publish` idea id("dev.plex.module") version "1.2" } group = "dev.plex" version = "2.0-SNAPSHOT" description = "Module-HTTPD" repositories { mavenCentral() maven { url = uri("https://repo.papermc.io/repository/maven-public/") } maven { url = uri("https://nexus.telesphoreo.me/repository/plex/") } maven { url = uri("https://maven.enginehub.org/repo/") } maven { name = "codemc" url = uri("https://repo.codemc.io/repository/maven-public/") } } sourceSets { main { resources.srcDir(layout.buildDirectory.dir("generated/frontend-resources")) } } dependencies { implementation("org.projectlombok:lombok:1.18.46") annotationProcessor("org.projectlombok:lombok:1.18.46") compileOnly("io.papermc.paper:paper-api:26.1.2.build.+") implementation("dev.plex:api:2.0-SNAPSHOT") implementation("org.json:json:20251224") implementation("org.reflections:reflections:0.10.2") plexLibrary("org.eclipse.jetty:jetty-server:12.1.9") plexLibrary("org.eclipse.jetty.ee10:jetty-ee10-servlet:12.1.9") plexLibrary("org.eclipse.jetty:jetty-proxy:12.1.9") compileOnly("de.tr7zw:item-nbt-api:2.15.7") implementation(platform("com.intellectualsites.bom:bom-newest:1.56")) // Ref: https://github.com/IntellectualSites/bom compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") implementation("commons-io:commons-io:2.22.0") } val frontendDir = layout.projectDirectory.dir("src/main/frontend") val frontendOutputDir = layout.buildDirectory.dir("generated/frontend-resources/httpd/app") tasks.register("bunInstallFrontend") { workingDir = frontendDir.asFile commandLine("bun", "install", "--frozen-lockfile") inputs.files( frontendDir.file("package.json"), frontendDir.file("bun.lock") ) outputs.dir(frontendDir.dir("node_modules")) } tasks.register("buildFrontend") { workingDir = frontendDir.asFile commandLine("bun", "run", "build") dependsOn("bunInstallFrontend") inputs.dir(frontendDir.dir("src")) inputs.files( frontendDir.file("index.html"), frontendDir.file("vite.config.ts"), frontendDir.file("svelte.config.js"), frontendDir.file("tsconfig.json"), frontendDir.file("tsconfig.node.json"), frontendDir.file("components.json"), frontendDir.file("package.json"), frontendDir.file("bun.lock") ) outputs.dir(frontendOutputDir) } tasks.getByName("jar") { duplicatesStrategy = DuplicatesStrategy.EXCLUDE archiveBaseName.set("Module-HTTPD") archiveVersion.set("") } java { toolchain.languageVersion.set(JavaLanguageVersion.of(25)) } tasks { compileJava { options.encoding = Charsets.UTF_8.name() } javadoc { options.encoding = Charsets.UTF_8.name() } processResources { dependsOn("buildFrontend") filteringCharset = Charsets.UTF_8.name() exclude("dev/**") exclude("httpd/assets/**") } } publishing { publications { create("maven") { from(components["java"]) } } }