build.gradle.kts 3.1 KB

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