build.gradle.kts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. import org.gradle.api.file.DuplicatesStrategy.EXCLUDE
  2. import java.text.SimpleDateFormat
  3. import java.util.Date
  4. val modId: String by project
  5. val modName: String by project
  6. val modAuthor: String by project
  7. val modVersion: String by project
  8. val minecraftVersion: String by project
  9. val mixinVersion: String by project
  10. val modNameStripped = modName.replace(" ", "")
  11. val jarVersion = "$minecraftVersion+v$modVersion"
  12. buildscript {
  13. repositories {
  14. maven("https://repo.spongepowered.org/maven")
  15. }
  16. }
  17. plugins {
  18. `java-library`
  19. idea
  20. id("org.spongepowered.gradle.vanilla") version "0.2.1-SNAPSHOT"
  21. }
  22. idea {
  23. module {
  24. excludeDirs.add(project.file("run"))
  25. }
  26. }
  27. repositories {
  28. maven("https://repo.spongepowered.org/maven")
  29. mavenCentral()
  30. }
  31. dependencies {
  32. implementation("org.spongepowered:mixin:$mixinVersion")
  33. api("com.google.code.findbugs:jsr305:3.0.2")
  34. }
  35. base {
  36. archivesName.set("$modNameStripped-Common")
  37. }
  38. minecraft {
  39. version(minecraftVersion)
  40. runs.clear()
  41. }
  42. allprojects {
  43. group = "com.$modAuthor.$modId"
  44. version = modVersion
  45. apply(plugin = "java")
  46. dependencies {
  47. implementation("org.jetbrains:annotations:22.0.0")
  48. }
  49. extensions.getByType<JavaPluginExtension>().apply {
  50. toolchain.languageVersion.set(JavaLanguageVersion.of(16))
  51. }
  52. tasks.withType<JavaCompile> {
  53. options.encoding = "UTF-8"
  54. options.release.set(16)
  55. }
  56. }
  57. subprojects {
  58. repositories {
  59. maven("https://repo.spongepowered.org/maven")
  60. }
  61. dependencies {
  62. implementation(rootProject)
  63. }
  64. base {
  65. archivesName.set("$modNameStripped-${project.name}")
  66. }
  67. tasks.withType<JavaCompile> {
  68. source({ rootProject.sourceSets.main.get().allSource })
  69. }
  70. tasks.processResources {
  71. from(rootProject.sourceSets.main.get().resources)
  72. inputs.property("name", modName)
  73. inputs.property("version", modVersion)
  74. }
  75. tasks.jar {
  76. archiveVersion.set(jarVersion)
  77. from(rootProject.file("LICENSE"))
  78. manifest {
  79. attributes(
  80. "Specification-Title" to modId,
  81. "Specification-Vendor" to modAuthor,
  82. "Specification-Version" to "1",
  83. "Implementation-Title" to "$modNameStripped-${project.name}",
  84. "Implementation-Vendor" to modAuthor,
  85. "Implementation-Version" to modVersion,
  86. "Implementation-Timestamp" to SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(Date()),
  87. "MixinConfigs" to "$modId.mixins.json"
  88. )
  89. }
  90. }
  91. }
  92. val copyJars = tasks.register<Copy>("copyJars") {
  93. duplicatesStrategy = EXCLUDE
  94. for (subproject in subprojects) {
  95. dependsOn(subproject.tasks.build)
  96. from(subproject.base.libsDirectory.file("${subproject.base.archivesName.get()}-$jarVersion.jar"))
  97. }
  98. into(file("${project.buildDir}/dist"))
  99. }
  100. tasks.build {
  101. finalizedBy(copyJars)
  102. }