aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle115
1 files changed, 115 insertions, 0 deletions
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..ac00097
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,115 @@
+//file:noinspection GroovyAssignabilityCheck
+
+plugins {
+ id("java")
+ id("checkstyle")
+ id("com.github.spotbugs").version("5.0.3")
+ id("org.cadixdev.licenser").version("0.6.1")
+ id("com.github.johnrengelman.shadow").version("7.1.0")
+}
+
+setGroup("net.elytrium")
+setVersion("1.0.3-SNAPSHOT")
+
+compileJava {
+ getOptions().setEncoding("UTF-8")
+}
+
+java {
+ setSourceCompatibility(JavaVersion.VERSION_11)
+ setTargetCompatibility(JavaVersion.VERSION_11)
+}
+
+repositories {
+ mavenCentral()
+
+ maven {
+ setName("velocitypowered-repo")
+ setUrl("https://nexus.velocitypowered.com/repository/maven-public/")
+ }
+ maven {
+ setName("elytrium-repo")
+ setUrl("https://maven.elytrium.net/repo/")
+ }
+}
+
+dependencies {
+ compileOnly("net.elytrium:limboapi-api:1.0.3-SNAPSHOT")
+
+ compileOnly("com.velocitypowered:velocity-api:3.1.0")
+ annotationProcessor("com.velocitypowered:velocity-api:3.1.0")
+
+ implementation("at.favre.lib:bcrypt:0.9.0")
+ implementation("dev.samstevens.totp:totp:1.7.1")
+
+ implementation("com.j256.ormlite:ormlite-jdbc:5.7")
+
+ implementation("com.h2database:h2:2.0.202")
+ implementation("mysql:mysql-connector-java:8.0.27")
+ implementation("org.postgresql:postgresql:42.3.1")
+
+ compileOnly("com.github.spotbugs:spotbugs-annotations:4.5.2")
+}
+
+shadowJar {
+ getArchiveClassifier().set("")
+
+ exclude("META-INF/maven/**")
+ exclude("META-INF/INFO_BIN")
+ exclude("META-INF/INFO_SRC")
+ exclude("google/protobuf/**")
+ exclude("com/google/protobuf/**")
+ exclude("com/mysql/cj/x/**")
+ exclude("com/mysql/cj/xdevapi/**")
+ exclude("org/apache/commons/codec/language/**")
+ exclude("org/checkerframework/**")
+ exclude("**/package-info.class")
+
+ minimize()
+
+ relocate("at.favre.lib", "net.elytrium.limboauth.thirdparty.at.favre.lib")
+ relocate("com.j256.ormlite", "net.elytrium.limboauth.thirdparty.com.j256.ormlite")
+ relocate("com.mysql", "net.elytrium.limboauth.thirdparty.com.mysql")
+ relocate("dev.samstevens.totp", "net.elytrium.limboauth.thirdparty.dev.samstevens.totp")
+ relocate("org.apache.commons.codec", "net.elytrium.limboauth.thirdparty.org.apache.commons.codec")
+ relocate("org.h2", "net.elytrium.limboauth.thirdparty.org.h2")
+ relocate("org.postgresql", "net.elytrium.limboauth.thirdparty.org.postgresql")
+}
+
+license {
+ setHeader(file("HEADER.txt"))
+}
+
+checkstyle {
+ setToolVersion("9.2")
+ setConfigFile(file("${this.getRootDir()}/config/checkstyle/checkstyle.xml"))
+ setConfigProperties("configDirectory": "${this.getRootDir()}/config/checkstyle")
+
+ // The build should immediately fail if we have errors.
+ setMaxErrors(0)
+ setMaxWarnings(0)
+}
+
+spotbugsMain {
+ setExcludeFilter(file("${this.getRootDir()}/config/spotbugs/suppressions.xml"))
+
+ reports {
+ html {
+ getRequired().set(true)
+ getOutputLocation().set(file("${this.getBuildDir()}/reports/spotbugs/main/spotbugs.html"))
+ setStylesheet("fancy-hist.xsl")
+ }
+ }
+}
+
+sourceSets.main.getJava().srcDir(getTasks().register("generateTemplates", Copy) { task ->
+ task.getInputs().properties("version": getVersion())
+
+ task.from(file("src/main/templates"))
+ .into(getLayout().getBuildDirectory().dir("generated/sources/templates"))
+ .expand("version": getVersion())
+}.map {
+ it.getOutputs()
+})
+
+assemble.dependsOn(shadowJar)