plugins { id "java" id "maven-publish" id "net.minecrell.plugin-yml.bukkit" version "0.6.1-SNAPSHOT" id "com.github.johnrengelman.shadow" version "7.1.2" } repositories { mavenLocal() maven { url = uri("https://papermc.io/repo/repository/maven-public/") } maven { url = uri("https://repository.apache.org/content/repositories/snapshots/") } maven { url = uri("https://repo.maven.apache.org/maven2/") } maven { url = uri("https://jitpack.io") content { includeGroup("com.github.MilkBowl") } } mavenCentral() } dependencies { library "org.projectlombok:lombok:1.18.22" annotationProcessor "org.projectlombok:lombok:1.18.22" library "org.json:json:20220320" library "commons-io:commons-io:2.11.0" library "dev.morphia.morphia:morphia-core:2.2.6" library "redis.clients:jedis:4.2.1" library "org.mariadb.jdbc:mariadb-java-client:3.0.4" library "com.zaxxer:HikariCP:5.0.1" library "org.apache.httpcomponents:httpclient:4.5.13" library "org.apache.commons:commons-lang3:3.12.0" library "org.apache.maven.resolver:maven-resolver-api:1.7.3" library "org.apache.maven.resolver:maven-resolver-impl:1.7.3" library "org.apache.maven.resolver:maven-resolver-connector-basic:1.7.3" library "org.apache.maven.resolver:maven-resolver-transport-http:1.7.3" library "org.apache.maven:maven-resolver-provider:3.8.5" library "org.eclipse.jetty:jetty-server:11.0.9" library "org.eclipse.jetty:jetty-servlet:11.0.9" library "org.eclipse.jetty:jetty-proxy:11.0.9" library "com.google.code.gson:gson:2.9.0" compileOnly "io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT" compileOnly("com.github.MilkBowl:VaultAPI:1.7") { exclude group: "org.bukkit", module: "bukkit" } implementation "org.bstats:bstats-base:3.0.0" implementation "org.bstats:bstats-bukkit:3.0.0" } group = "dev.plex" version = "1.0.2-SNAPSHOT" description = "Plex" shadowJar { archiveClassifier.set("") relocate "org.bstats", "dev.plex" } bukkit { name = "Plex" version = rootProject.version description = "Plex provides a new experience for freedom servers." main = "dev.plex.Plex" website = "https://plex.us.org" authors = ["Telesphoreo", "taahanis", "supernt"] softDepend = ["Vault"] apiVersion = "1.18" } 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.rootDir/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()) } } java { toolchain.languageVersion.set(JavaLanguageVersion.of(17)) } 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] } } repositories { maven { def releasesRepoUrl = uri("https://nexus.telesphoreo.me/repository/plex-releases/") def snapshotsRepoUrl = uri("https://nexus.telesphoreo.me/repository/plex-snapshots/") url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl credentials { username = System.getenv("plexUser") password = System.getenv("plexPassword") } } } } tasks.withType(JavaCompile) { options.encoding = "UTF-8" } tasks { build { dependsOn(shadowJar) finalizedBy(buildProperties) } javadoc { options.memberLevel = JavadocMemberLevel.PRIVATE } }