Files
MoonBridge/build.gradle.kts
T
layue13andClaude Opus 5.5 afea023bce build: 代理发行包改为单个可运行的 moonbridge.jar
发行包去掉 bin/ 启动脚本和 lib/ 下的 42 个依赖 jar,改为与其他代理服务端一样
用 java -jar moonbridge.jar 启动:
- proxy-core 用 shadow 打出含全部依赖的 moonbridge.jar(合并 META-INF/services,
  清单写入 Main-Class、Multi-Release 与 Enable-Native-Access: ALL-UNNAMED)
- 泄漏检测默认关闭改由 ProxyMain 在加载 Netty 前设置,显式 -D 仍优先
- 移除不再使用的 application 约定插件
- 安装包检查、烟测与基准脚本改用发行包根目录作 classpath;文档同步

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 15:00:14 +08:00

56 lines
2.3 KiB
Kotlin

plugins {
id("moonbridge.java-library-conventions") apply false
}
val releaseVersion = providers.gradleProperty("releaseVersion").orElse("0.1.0-SNAPSHOT").get()
allprojects {
group = "uk.potatolab.moonbridge"
version = releaseVersion
}
val luckPerms = findProject(":luckperms-moonbridge")
val published = listOfNotNull(":proxy-plugin-api", ":messaging", ":backend", luckPerms?.path)
tasks.register("check") {
group = "verification"
description = "Runs every module's checks (add -Pluckperms to include the LuckPerms plugin)."
dependsOn(subprojects.map { "${it.path}:check" })
}
tasks.register("publish") {
group = "publishing"
description = "Publishes the Maven modules (CI passes -Pluckperms so the LuckPerms plugin is included)."
dependsOn(published.map { "$it:publish" })
}
// client-mod/ is a separate Gradle build (GTNH toolchain for Minecraft 1.7.10); release runs it through its
// own wrapper. Pass -PskipClientMod to leave it out, e.g. where the Minecraft toolchain cannot be downloaded.
val skipClientMod = providers.gradleProperty("skipClientMod").map { it != "false" }.getOrElse(false)
val windows = System.getProperty("os.name").lowercase().contains("windows")
val buildClientMod = tasks.register<Exec>("buildClientMod") {
group = "build"
description = "Builds the 1.7.10 Forge WebSocket client mod in client-mod/."
workingDir = file("client-mod")
// clean: the jar name carries the git version, so older jars would otherwise be collected too.
val gradle = if (windows) listOf("cmd", "/c", "gradlew.bat") else listOf("bash", "./gradlew")
commandLine(gradle + listOf("clean", "build"))
}
tasks.register<Sync>("release") {
group = "distribution"
description = "Collects everything a deployment needs into build/release (see docs/release-layout.md)."
into(layout.buildDirectory.dir("release"))
from(file("docs/release-layout.md")) { rename { "README.md" } }
from(project(":proxy-core").tasks.named("distZip")) { into("server") }
from(project(":backend").tasks.named("jar")) { into("backend") }
if (!skipClientMod) {
dependsOn(buildClientMod)
from(fileTree("client-mod/build/libs") {
include("moonbridgews-*.jar")
exclude("*-dev.jar", "*-sources.jar")
}) { into("client") }
}
}