oblak/examples/example-velocity/build.gradle.kts
2022-06-18 22:52:58 -07:00

75 lines
2.3 KiB
Kotlin

plugins {
id("com.github.johnrengelman.shadow")
id("cloud.example-conventions")
}
indra {
javaVersions().target(11) // Velocity 3 requires Java 11
}
val velocityRunClasspath by configurations.creating {
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class, Usage.JAVA_RUNTIME))
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class, Category.LIBRARY))
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements::class, LibraryElements.JAR))
}
}
repositories {
ivy("https://versions.velocitypowered.com/download/") {
patternLayout { artifact("[revision].[ext]") }
metadataSources { artifact() }
content { includeModule("com.velocitypowered", "velocity-proxy") }
}
}
tasks {
shadowJar {
dependencies {
exclude(dependency("com.velocitypowered:velocity-api"))
}
}
build {
dependsOn(shadowJar)
}
val pluginJar = shadowJar.map { it.outputs }
val velocityRunFiles = velocityRunClasspath.asFileTree
register("runVelocity", JavaExec::class) {
group = "cloud"
description = "Spin up a Velocity server environment"
standardInput = System.`in`
if (JavaVersion.current() < JavaVersion.VERSION_11) {
javaLauncher.set(project.javaToolchains.launcherFor { languageVersion.set(JavaLanguageVersion.of(11)) })
}
inputs.files(pluginJar)
classpath(velocityRunFiles)
workingDir = layout.projectDirectory.dir("run").asFile
doFirst {
// Prepare
val modsDir = workingDir.resolve("plugins")
if (!modsDir.isDirectory) {
modsDir.mkdirs()
}
project.copy {
into(modsDir.absolutePath)
from(pluginJar) {
rename { "${rootProject.name}-${project.name}.jar" }
}
}
}
}
}
dependencies {
api(project(":cloud-velocity"))
api(project(":cloud-minecraft-extras"))
api(project(":cloud-annotations"))
annotationProcessor(libs.velocityApi)
compileOnly(libs.velocityApi)
velocityRunClasspath("com.velocitypowered", "velocity-proxy", libs.versions.velocityApi.get())
}