import org.apache.tools.ant.filters.ReplaceTokens plugins { id 'java' id 'com.github.johnrengelman.shadow' version '8.1.1' id 'com.palantir.git-version' version '0.13.0' } group = 'net.coreprotect' String projectVersion = '22.4' String projectBranch = '' version = projectVersion // `version` might be modified, we don't always want that (e.g. plugin.yml) description = 'Provides block protection for your server.' sourceCompatibility = '21' if (System.getenv("BUILD_NUMBER") != null) { // Being built in Jenkins, append Build ID version += "-${System.getenv("BUILD_NUMBER")}" } else if (!(version ==~ '^[^.]*\\.[^.]*\\.[^.]*$')) { // Thanks https://stackoverflow.com/a/9949200/1709894 // Append the Git hash if 'version' has less than two periods version += "-${gitVersion()}" } logger.info("Building version $version") repositories { maven { url = 'https://hub.spigotmc.org/nexus/content/groups/public/' } maven { url = 'https://repo.papermc.io/repository/maven-public/' } maven { url = 'https://repo.codemc.org/repository/maven-public/' } } dependencies { implementation(platform("com.intellectualsites.bom:bom-newest:1.44")) // Ref: https://github.com/IntellectualSites/bom compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") compileOnly 'io.papermc.paper:paper-api:1.20.4-R0.1-SNAPSHOT' implementation 'org.bstats:bstats-bukkit-lite:1.8' implementation 'com.zaxxer:HikariCP:5.0.1' } jar { archiveClassifier.set("original") } artifacts { archives shadowJar } shadowJar { dependencies { // #toString because #getGroup technically returns an Object relocate('org.bstats', project.group.toString()) relocate('com.zaxxer', project.group.toString()) exclude(dependency('com.google.code.gson:.*')) exclude(dependency('org.intellij:.*')) exclude(dependency('org.jetbrains:.*')) exclude(dependency('org.slf4j:.*')) } archiveClassifier.set(null) } ext { author = 'Intelli' resourceTokens = [ 'project.version': projectVersion, 'project.branch': projectBranch, ] } processResources { include 'plugin.yml' // Whole lotta boilerplate to get the same functionality as Maven here. // Replace this if Gradle ever lets us configure the filter before filtering. filter(new Transformer() { @Override String transform(String s) { ReplaceTokens replaceTokens = new ReplaceTokens(new StringReader(s)) replaceTokens.setBeginToken('${') replaceTokens.setEndToken('}') resourceTokens.forEach { key, val -> def token = new ReplaceTokens.Token() token.setKey(key.toString()) token.setValue(val.toString()) replaceTokens.addConfiguredToken(token) } return replaceTokens.readLines().join('\n') } }) }