96 lines
2.5 KiB
Kotlin
96 lines
2.5 KiB
Kotlin
import com.google.protobuf.gradle.id
|
|
|
|
plugins {
|
|
kotlin("jvm") version "2.3.20"
|
|
eclipse
|
|
id("com.gradleup.shadow") version "8.3.9"
|
|
id("com.google.protobuf") version "0.10.0"
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven("https://repo.papermc.io/repository/maven-public/")
|
|
}
|
|
|
|
dependencies {
|
|
compileOnly("io.papermc.paper:paper-api:1.19.4-R0.1-SNAPSHOT")
|
|
compileOnly("org.apache.logging.log4j:log4j-core:2.26.0")
|
|
implementation("com.google.protobuf:protobuf-kotlin:4.34.1")
|
|
implementation("io.grpc:grpc-stub:1.81.0")
|
|
implementation("io.grpc:grpc-kotlin-stub:1.5.0")
|
|
implementation("io.grpc:grpc-netty-shaded:1.81.0")
|
|
implementation("io.grpc:grpc-protobuf:1.81.0")
|
|
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
|
|
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2")
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
srcDirs("build/generated/source/proto/main/grpc")
|
|
srcDirs("build/generated/source/proto/main/grpckt")
|
|
srcDirs("build/generated/source/proto/main/java")
|
|
}
|
|
}
|
|
}
|
|
|
|
protobuf {
|
|
protoc {
|
|
artifact = "com.google.protobuf:protoc:4.34.1"
|
|
}
|
|
plugins {
|
|
id("grpc") {
|
|
artifact = "io.grpc:protoc-gen-grpc-java:1.81.0"
|
|
}
|
|
id("grpckt") {
|
|
artifact = "io.grpc:protoc-gen-grpc-kotlin:1.5.0:jdk8@jar"
|
|
}
|
|
}
|
|
generateProtoTasks {
|
|
ofSourceSet("main").forEach {
|
|
it.plugins {
|
|
// Apply the "grpc" plugin whose spec is defined above, without options.
|
|
id("grpc")
|
|
id("grpckt")
|
|
}
|
|
it.builtins {
|
|
id("kotlin")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
kotlin {
|
|
jvmToolchain(17)
|
|
}
|
|
|
|
tasks {
|
|
build {
|
|
dependsOn(shadowJar)
|
|
}
|
|
|
|
processResources {
|
|
val props = mapOf("version" to version)
|
|
filesMatching("plugin.yml") {
|
|
expand(props)
|
|
}
|
|
}
|
|
|
|
shadowJar {
|
|
archiveClassifier.set("") // Use empty string instead of null.
|
|
isEnableRelocation = true
|
|
relocationPrefix = "${project.group}.shadow"
|
|
exclude("io.github.miniplaceholders.*") // Exclude the MiniPlaceholders package from being shadowed.
|
|
exclude("natives/**")
|
|
mergeServiceFiles()
|
|
minimize {
|
|
exclude(dependency("org.slf4j:slf4j-nop:.*"))
|
|
exclude(dependency("io.grpc:grpc-netty-shaded:.*"))
|
|
}
|
|
}
|
|
|
|
jar { archiveClassifier.set("part") }
|
|
|
|
build { dependsOn(shadowJar) }
|
|
}
|