plugins { id "java" id "maven-publish" id "net.minecrell.plugin-yml.bukkit" version "0.5.1" 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/") } 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.0" library "org.mariadb.jdbc:mariadb-java-client:3.0.4" library "org.apache.httpcomponents:httpclient:4.5.13" library "org.apache.commons:commons-lang3:3.12.0" compileOnly "io.papermc.paper:paper-api:1.18.2-R0.1-SNAPSHOT" implementation "org.bstats:bstats-base:3.0.0" implementation "org.bstats:bstats-bukkit:3.0.0" } group = "dev.plex" version = "0.10-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", "super"] 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") } 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) { from(components.java) } plexReleases(MavenPublication) { from(components.java) repositories { maven { url("https://nexus.telesphoreo.me/repository/plex-releases/") credentials { username = System.getenv("plex_repo_user") password = System.getenv("plex_repo_pass") } } } } plexSnapshots(MavenPublication) { from(components.java) repositories { maven { url("https://nexus.telesphoreo.me/repository/plex-snapshots/") credentials { username = System.getenv("plex_repo_user") password = System.getenv("plex_repo_pass") } } } } } } tasks.withType(JavaCompile) { options.encoding = "UTF-8" } tasks { build { dependsOn(shadowJar) finalizedBy(buildProperties) if (System.getenv("plex_repo_user") != null && System.getenv("plex_repo_pass") != null) { if (!getVersion().toString().toLowerCase().endsWith("-snapshot")) { dependsOn(publishPlexReleasesPublicationToMavenRepository) } } } javadoc { options.memberLevel = JavadocMemberLevel.PRIVATE } } task publishRelease { dependsOn(publishPlexReleasesPublicationToMavenRepository) } task publishSnapshot { dependsOn(publishPlexSnapshotsPublicationToMaven2Repository) } task jenkinsPublish { if (System.getenv("plex_repo_user") == "jenkins") { if (System.getenv("plex_repo_user") != null && System.getenv("plex_repo_user") == "jenkins") { if (!getVersion().toString().toLowerCase().endsWith("-snapshot")) { dependsOn(publishPlexReleasesPublicationToMavenRepository) } else { dependsOn(publishPlexSnapshotsPublicationToMaven2Repository) } } } }