build.gradle.kts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import com.github.jengelman.gradle.plugins.shadow.tasks.ConfigureShadowRelocation
  2. import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
  3. buildscript {
  4. repositories {
  5. jcenter()
  6. maven("https://files.minecraftforge.net/maven/")
  7. }
  8. dependencies {
  9. classpath("net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT")
  10. }
  11. }
  12. // Things used by other projects
  13. Projects.core = project("core")
  14. Projects.bukkit = project("bukkit")
  15. Projects.sponge = project("sponge")
  16. var core: Project by extra { project("core") }
  17. val bukkit by extra { project("bukkit") }
  18. val bukkit_18 by extra { bukkit.project("1_8_8") }
  19. val bukkit_112 by extra { bukkit.project("1_12") }
  20. val bukkit_113 by extra { bukkit.project("1_13") }
  21. val sponge by extra { project("sponge") }
  22. val sponge_7 by extra { sponge.project("api7") }
  23. val configurate by extra { ""}
  24. group = properties["pluginGroup"]!!
  25. version = properties["pluginVersion"]!!
  26. plugins {
  27. `java-library`
  28. `maven-publish`
  29. id("com.github.johnrengelman.shadow") version "4.0.4"
  30. }
  31. configurations {
  32. create("childJars")
  33. }
  34. val childJars: Configuration by configurations
  35. // Set up defaults for all projects, maven repositories, java compatibility level and compiling encoding
  36. allprojects {
  37. apply(plugin="java-library")
  38. apply(plugin="com.github.johnrengelman.shadow")
  39. repositories {
  40. mavenCentral()
  41. // World Edit
  42. maven(Repos.sk89q)
  43. // bStats
  44. maven(Repos.bstats)
  45. // configurate
  46. maven(Repos.sponge)
  47. // spigot
  48. maven(Repos.spigot)
  49. maven(Repos.sonatype)
  50. mavenLocal()
  51. }
  52. java {
  53. sourceCompatibility = JavaVersion.VERSION_1_8
  54. targetCompatibility = JavaVersion.VERSION_1_8
  55. }
  56. tasks.getting(JavaCompile::class) {
  57. options.encoding = "UTF-8"
  58. }
  59. val shadowJar by tasks.getting(ShadowJar::class) { // Configure basics of relocation
  60. relocate(Shadow.Origin.juli, Shadow.Target.juli)
  61. relocate(Shadow.Origin.tomcat, Shadow.Target.tomcat)
  62. exclude(Shadow.Exclude.ForgeGradle.dummyThing)
  63. exclude(Shadow.Exclude.ForgeGradle.template)
  64. }
  65. }
  66. // Sub projects don't need to shadow their dependencies. This eliminates common ones
  67. subprojects {
  68. val shadowJar by tasks.getting(ShadowJar::class) {
  69. dependencies {
  70. exclude(dependency("${Deps.Groups.sponge}:${Deps.Modules.configurate_yaml}"))
  71. exclude(dependency(Shadow.Exclude.guava))
  72. exclude(dependency(Shadow.Exclude.snakeyaml))
  73. exclude(dependency(Shadow.Exclude.tomcat))
  74. exclude(dependency(Shadow.Exclude.juli))
  75. }
  76. }
  77. }
  78. dependencies {
  79. compile(bukkit)
  80. compile(sponge)
  81. compile(bukkit_18)
  82. compile(bukkit_112)
  83. compile(bukkit_113)
  84. compile(sponge_7)
  85. }
  86. val shadowJar by tasks.getting(ShadowJar::class) { // Root shadow relocation
  87. relocate(Shadow.Origin.bstatsBukkit, Shadow.Target.bstatsBukkit)
  88. baseName = "mcMMO"
  89. classifier = "bundle"
  90. }
  91. val build by tasks
  92. build.dependsOn(shadowJar)