plugins { id "net.minecrell.plugin-yml.paper" version "0.6.0" } dependencies { library "org.projectlombok:lombok:1.18.30" annotationProcessor "org.projectlombok:lombok:1.18.30" library "org.json:json:20231013" library "commons-io:commons-io:2.15.0" library "redis.clients:jedis:5.0.2" library "org.mariadb.jdbc:mariadb-java-client:3.2.0" library "com.zaxxer:HikariCP:5.0.1" library "org.apache.maven.resolver:maven-resolver-transport-http:1.9.16" library "org.jetbrains:annotations:24.0.1" compileOnly "dev.folia:folia-api:1.20.1-R0.1-SNAPSHOT" compileOnly("com.github.MilkBowl:VaultAPI:1.7.1") { exclude group: "org.bukkit", module: "bukkit" } implementation "org.bstats:bstats-base:3.0.2" implementation "org.bstats:bstats-bukkit:3.0.2" } group = rootProject.group version = rootProject.version description = "Plex-Server" shadowJar { archiveBaseName.set("Plex") archiveClassifier.set("") relocate "org.bstats", "dev.plex" } paper { name = "Plex" version = project.version description = "Plex provides a new experience for freedom servers." main = "dev.plex.Plex" loader = "dev.plex.PlexLibraryManager" website = "https://plex.us.org" authors = ["Telesphoreo", "taahanis", "supernt"] apiVersion = "1.19" foliaSupported = true generateLibrariesJson = true // Load BukkitTelnet and LibsDisguises before Plex so the modules register properly serverDependencies { 'BukkitTelnet' { required = false load = 'BEFORE' } 'LibsDisguises' { required = false load = 'BEFORE' } 'Vault' { required = false load = 'BEFORE' } 'Essentials' { required = false load = 'BEFORE' } 'SlimeWorldManager' { required = false load = 'AFTER' } } } String getGitHash() { def stdout = new ByteArrayOutputStream() try { exec { commandLine "git", "rev-parse", "--short", "HEAD" standardOutput = stdout ignoreExitValue = true } } catch (GradleException e) { logger.error("Couldn't determine Git head because Git is not installed. " + e.getMessage()) } return stdout.size() > 0 ? stdout.toString().trim() : "unknown" } String getBuildNumber() { def stdout = new ByteArrayOutputStream() try { exec { commandLine "git", "rev-list", "HEAD", "--count" standardOutput = stdout ignoreExitValue = true } } catch (GradleException e) { logger.error("Couldn't determine build number because Git is not installed. " + e.getMessage()) } return stdout.size() ? stdout.toString().trim() + " (local)" : "unknown" } static def getDate() { return new Date().format("MM/dd/yyyy 'at' hh:mm:ss a z") } task buildProperties { ant.propertyfile(file: "$project.projectDir/src/main/resources/build.properties") { entry(key: "buildAuthor", default: System.getenv("JENKINS_URL") != null ? "jenkins" : "unknown") entry(key: "buildNumber", value: System.getenv("JENKINS_URL") != null ? System.getenv("BUILD_NUMBER") + " (Jenkins)" : getBuildNumber()) entry(key: "buildDate", value: getDate()) entry(key: "buildHead", value: getGitHash()) } } tasks { build { dependsOn(shadowJar) finalizedBy(buildProperties) } jar { enabled = false } shadowJar { finalizedBy(rootProject.tasks.copyJars) } javadoc { options.memberLevel = JavadocMemberLevel.PRIVATE } } publishing { publications { maven(MavenPublication) { pom.withXml { def dependenciesNode = asNode().appendNode("dependencies") configurations.getByName("library").getAllDependencies().each { dependency -> dependenciesNode.appendNode("dependency").with { it.appendNode("groupId", dependency.group) it.appendNode("artifactId", dependency.name) it.appendNode("version", dependency.version) it.appendNode("scope", "provided") } } configurations.getByName("implementation").getAllDependencies().each { dependency -> dependenciesNode.appendNode("dependency").with { it.appendNode("groupId", dependency.group) it.appendNode("artifactId", dependency.name) it.appendNode("version", dependency.version) it.appendNode("scope", "runtime") } } } artifacts = [shadowJar] } } }