build.gradle 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. plugins {
  2. id("forgified-fabric-loom") version("0.6.66") apply false
  3. id("maven-publish")
  4. id("java")
  5. id("java-library")
  6. id("net.minecrell.licenser") version("0.4.1")
  7. id("com.matthewprenger.cursegradle") version("1.4.0")
  8. }
  9. import net.fabricmc.loom.task.RemapJarTask
  10. import java.text.SimpleDateFormat
  11. archivesBaseName = "RoughlyEnoughItems"
  12. def runNumber = (System.getenv("GITHUB_RUN_NUMBER") == null ? "9999" : System.getenv("GITHUB_RUN_NUMBER"))
  13. version = rootProject.base_version + "." + runNumber
  14. group = "me.shedaniel"
  15. allprojects {
  16. apply plugin: 'maven-publish'
  17. apply plugin: 'forgified-fabric-loom'
  18. apply plugin: 'net.minecrell.licenser'
  19. sourceCompatibility = targetCompatibility = 1.8
  20. loom {
  21. silentMojangMappingsLicense()
  22. // shareCaches = true
  23. }
  24. repositories {
  25. maven { url "https://maven.shedaniel.me" }
  26. maven { url "https://maven.terraformersmc.com/releases" }
  27. }
  28. processResources {
  29. filesMatching('fabric.mod.json') {
  30. expand 'version': project.version
  31. }
  32. inputs.property "version", project.version
  33. }
  34. license {
  35. header rootProject.file('HEADER')
  36. include '**/*.java'
  37. }
  38. jar {
  39. from rootProject.file("LICENSE")
  40. }
  41. dependencies {
  42. minecraft("com.mojang:minecraft:${project.minecraft_version}")
  43. mappings(loom.officialMojangMappings())
  44. modApi("net.fabricmc:fabric-loader:${project.fabricloader_version}")
  45. modApi(fabricApi.module("fabric-api-base", project.fabric_api))
  46. include(fabricApi.module("fabric-api-base", project.fabric_api))
  47. modApi(fabricApi.module("fabric-resource-loader-v0", project.fabric_api))
  48. modApi(fabricApi.module("fabric-networking-v0", project.fabric_api))
  49. modApi(fabricApi.module("fabric-lifecycle-events-v1", project.fabric_api))
  50. modApi(fabricApi.module("fabric-rendering-fluids-v1", project.fabric_api))
  51. modRuntime("net.fabricmc.fabric-api:fabric-api:${project.fabric_api}")
  52. modApi("me.shedaniel.cloth.api:cloth-client-events-v0:${cloth_client_events_v0_version}") {
  53. transitive(false)
  54. }
  55. include("me.shedaniel.cloth.api:cloth-client-events-v0:${cloth_client_events_v0_version}") {
  56. transitive(false)
  57. }
  58. modApi("me.shedaniel.cloth:cloth-config-fabric:${cloth_config_version}") {
  59. exclude(module: "fabric-api")
  60. }
  61. modApi("org.jetbrains:annotations:19.0.0")
  62. modCompileOnly("com.terraformersmc:modmenu:${modmenu_version}") {
  63. transitive(false)
  64. }
  65. modRuntime("com.terraformersmc:modmenu:${modmenu_version}") {
  66. transitive(false)
  67. }
  68. modRuntime("me.shedaniel:SmoothScrollingEverywhere:3.0.3-unstable") {
  69. transitive(false)
  70. }
  71. }
  72. tasks.withType(JavaCompile) {
  73. options.encoding = "UTF-8"
  74. }
  75. task sourcesJar(type: Jar, dependsOn: classes) {
  76. classifier("sources")
  77. from sourceSets.main.allSource
  78. }
  79. }
  80. subprojects {
  81. group = rootProject.group
  82. version = rootProject.version
  83. task remapMavenJar(type: Copy, dependsOn: remapJar) {
  84. afterEvaluate {
  85. from("${project.buildDir}/libs/$archivesBaseName-${version}.jar")
  86. into("${project.buildDir}/libs/")
  87. rename { String fn -> "$archivesBaseName-${version}-maven.jar" }
  88. }
  89. }
  90. configurations {
  91. dev
  92. remapped
  93. }
  94. jar {
  95. classifier("dev")
  96. }
  97. remapJar {
  98. classifier(null)
  99. }
  100. artifacts {
  101. dev file: file("${project.buildDir}/libs/$archivesBaseName-${version}-dev.jar"), type: "jar", builtBy: jar
  102. remapped file: file("${project.buildDir}/libs/$archivesBaseName-${version}.jar"), type: "jar", builtBy: remapJar
  103. }
  104. publishing {
  105. publications {
  106. create("${archivesBaseName}_mavenJava", MavenPublication) {
  107. afterEvaluate {
  108. artifact(file("${project.buildDir}/libs/$archivesBaseName-${version}-maven.jar")) {
  109. builtBy remapMavenJar
  110. }
  111. artifact(sourcesJar) {
  112. builtBy remapSourcesJar
  113. }
  114. }
  115. }
  116. }
  117. repositories {
  118. if (System.getenv("MAVEN_PASS") != null) {
  119. maven {
  120. url = "https://deploy.shedaniel.me/"
  121. credentials {
  122. username = "shedaniel"
  123. password = System.getenv("MAVEN_PASS")
  124. }
  125. }
  126. }
  127. }
  128. }
  129. }
  130. task licenseFormatAll
  131. subprojects { licenseFormatAll.dependsOn("${path}:licenseFormat") }
  132. subprojects { rootProject.remapJar.dependsOn("${path}:remapJar") }
  133. task remapMavenJar(type: RemapJarTask, dependsOn: jar) {
  134. input.set(file("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar"))
  135. archiveName = "${archivesBaseName}-${version}-maven.jar"
  136. addNestedDependencies.set(false)
  137. }
  138. dependencies {
  139. subprojects.each {
  140. compile project(path: ":${it.name}", configuration: "dev")
  141. include project(path: ":${it.name}", configuration: "remapped")
  142. }
  143. }
  144. def releaseChangelog = "No changelog"
  145. /* Thank you modmenu & fablabs */
  146. task releaseOnCf {
  147. def df = new SimpleDateFormat("yyyy-MM-dd HH:mm")
  148. df.setTimeZone(TimeZone.getTimeZone("UTC"))
  149. def branch
  150. if (System.env.BRANCH_NAME) {
  151. branch = System.env.BRANCH_NAME
  152. branch = branch.substring(branch.lastIndexOf("/") + 1)
  153. } else {
  154. branch = "git rev-parse --abbrev-ref HEAD".execute().in.text.trim()
  155. }
  156. if (branch == "HEAD") {
  157. branch = "git rev-parse --short HEAD".execute().in.text.trim()
  158. }
  159. def time = df.format(new Date())
  160. def changes = new StringBuilder()
  161. changes << "<h2>REI v$project.version for $project.supported_version</h2>Updated at <b>$time</b>.<br><a href=\"https://www.github.com/shedaniel/RoughlyEnoughItems/commits/$branch\">Click here for changelog</a>"
  162. def proc = "git log --max-count=200 --pretty=format:%s".execute()
  163. proc.in.eachLine { line ->
  164. def processedLine = line.toString()
  165. if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) {
  166. changes << "<br>- ${processedLine.capitalize()}"
  167. }
  168. }
  169. proc.waitFor()
  170. releaseChangelog = changes.toString()
  171. dependsOn tasks.getByName("curseforge")
  172. }
  173. curseforge {
  174. if (project.hasProperty('danielshe_curse_api_key') || System.getenv('danielshe_curse_api_key') != null) {
  175. apiKey = project.hasProperty('danielshe_curse_api_key') ? project.property('danielshe_curse_api_key') : System.getenv('danielshe_curse_api_key')
  176. project {
  177. id = "310111"
  178. releaseType = "release"
  179. changelogType = "html"
  180. changelog = releaseChangelog
  181. addGameVersion "1.16-Snapshot"
  182. addGameVersion "1.16.4"
  183. addGameVersion "1.16.5"
  184. addGameVersion "Java 8"
  185. addGameVersion "Fabric"
  186. relations {
  187. requiredDependency "fabric-api"
  188. requiredDependency "cloth-config"
  189. embeddedLibrary "cloth-api"
  190. }
  191. mainArtifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}.jar")) {
  192. displayName = "[Fabric $project.supported_version] v$project.version"
  193. }
  194. addArtifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}-sources.jar")) {
  195. displayName = "[Fabric $project.supported_version] v$project.version Sources"
  196. }
  197. afterEvaluate {
  198. uploadTask.dependsOn("build")
  199. }
  200. }
  201. }
  202. options {
  203. forgeGradleIntegration = false
  204. javaVersionAutoDetect = false
  205. }
  206. }
  207. publishing {
  208. publications {
  209. mavenJava(MavenPublication) {
  210. artifact(file("${project.buildDir}/libs/$archivesBaseName-${version}-maven.jar")) {
  211. builtBy remapMavenJar
  212. }
  213. artifact(sourcesJar) {
  214. builtBy remapSourcesJar
  215. }
  216. pom.withXml {
  217. def depsNode = asNode().appendNode("dependencies")
  218. subprojects.each {
  219. def depNode = depsNode.appendNode("dependency")
  220. depNode.appendNode("groupId", it.group)
  221. depNode.appendNode("artifactId", it.name)
  222. depNode.appendNode("version", it.version)
  223. depNode.appendNode("scope", "compile")
  224. }
  225. }
  226. }
  227. }
  228. repositories {
  229. if (System.getenv("MAVEN_PASS") != null) {
  230. maven {
  231. url = "https://deploy.shedaniel.me/"
  232. credentials {
  233. username = "shedaniel"
  234. password = System.getenv("MAVEN_PASS")
  235. }
  236. }
  237. }
  238. }
  239. }