build.gradle 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. plugins {
  2. id("fabric-loom") version("0.5-SNAPSHOT") 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. id("net.corda.plugins.jar-filter") version("5.0.8") apply false
  9. }
  10. import net.fabricmc.loom.task.RemapJarTask
  11. import java.text.SimpleDateFormat
  12. archivesBaseName = "RoughlyEnoughItems"
  13. version = project.mod_version
  14. group = "me.shedaniel"
  15. allprojects {
  16. apply plugin: 'maven-publish'
  17. apply plugin: 'maven'
  18. apply plugin: 'fabric-loom'
  19. apply plugin: 'net.minecrell.licenser'
  20. apply plugin: 'net.corda.plugins.jar-filter'
  21. sourceCompatibility = targetCompatibility = 1.8
  22. sourceSets {
  23. testmod {
  24. compileClasspath += main.compileClasspath
  25. runtimeClasspath += main.runtimeClasspath
  26. }
  27. }
  28. loom {
  29. shareCaches = true
  30. }
  31. repositories {
  32. maven { url "https://dl.bintray.com/shedaniel/shedaniel-mods" }
  33. mavenLocal()
  34. }
  35. afterEvaluate {
  36. processResources {
  37. filesMatching('fabric.mod.json') {
  38. expand 'version': project.version
  39. }
  40. inputs.property "version", project.version
  41. }
  42. license {
  43. header rootProject.file('HEADER')
  44. include '**/*.java'
  45. }
  46. jar {
  47. from rootProject.file("LICENSE")
  48. }
  49. }
  50. dependencies {
  51. minecraft("com.mojang:minecraft:${project.minecraft_version}")
  52. mappings(minecraft.officialMojangMappings())
  53. modApi("net.fabricmc:fabric-loader:${project.fabricloader_version}")
  54. modApi("net.fabricmc.fabric-api:fabric-api:${project.fabric_api}") {
  55. exclude(module: "fabric-biomes-v1")
  56. }
  57. modApi("me.shedaniel.cloth.api:cloth-client-events-v0:${cloth_client_events_v0_version}") {
  58. transitive(false)
  59. }
  60. modApi("me.shedaniel.cloth:config-2:${cloth_config_version}") {
  61. exclude(module: "fabric-api")
  62. }
  63. modApi("me.sargunvohra.mcmods:autoconfig1u:${project.autoconfig1u}") {
  64. exclude(module: "fabric-api")
  65. }
  66. modApi("org.jetbrains:annotations:19.0.0")
  67. modCompileOnly("io.github.prospector:modmenu:${modmenu_version}") {
  68. transitive(false)
  69. }
  70. modRuntime("io.github.prospector:modmenu:${modmenu_version}") {
  71. transitive(false)
  72. }
  73. modRuntime("me.shedaniel:SmoothScrollingEverywhere:3.0.3-unstable") {
  74. transitive(false)
  75. }
  76. }
  77. tasks.withType(JavaCompile) {
  78. options.encoding = "UTF-8"
  79. }
  80. task sourcesJar(type: Jar, dependsOn: classes) {
  81. classifier("sources")
  82. from sourceSets.main.allSource
  83. }
  84. }
  85. subprojects {
  86. group = rootProject.group
  87. version = rootProject.version
  88. dependencies {
  89. testmodCompile sourceSets.main.output
  90. }
  91. task remapMavenJar(type: Copy, dependsOn: remapJar) {
  92. afterEvaluate {
  93. from("${project.buildDir}/libs/$archivesBaseName-${version}.jar")
  94. into("${project.buildDir}/libs/")
  95. rename { String fn -> "$archivesBaseName-${version}-maven.jar" }
  96. }
  97. }
  98. configurations {
  99. dev
  100. remapped
  101. }
  102. jar {
  103. classifier("dev")
  104. }
  105. remapJar {
  106. input.set(file("${project.buildDir}/filtered-libs/$archivesBaseName-${version}-dev-filtered.jar"))
  107. classifier(null)
  108. }
  109. artifacts {
  110. dev file: file("${project.buildDir}/libs/$archivesBaseName-${version}-dev.jar"), type: "jar", builtBy: jar
  111. remapped file: file("${project.buildDir}/libs/$archivesBaseName-${version}.jar"), type: "jar", builtBy: remapJar
  112. }
  113. task jarFilter(type: net.corda.gradle.jarfilter.JarFilterTask) {
  114. jars jar
  115. annotations {
  116. forRemove = [
  117. "org.jetbrains.annotations.NotNull",
  118. "org.jetbrains.annotations.Nullable",
  119. "org.jetbrains.annotations.ApiStatus\$Experimental",
  120. "org.jetbrains.annotations.ApiStatus\$Internal",
  121. "org.jetbrains.annotations.ApiStatus\$ScheduledForRemoval",
  122. "org.jetbrains.annotations.ApiStatus\$AvailableSince",
  123. "org.jetbrains.annotations.ApiStatus\$NonExtendable",
  124. "org.jetbrains.annotations.ApiStatus\$OverrideOnly"
  125. ]
  126. }
  127. }
  128. remapJar.dependsOn("jarFilter")
  129. publishing {
  130. publications {
  131. create("${archivesBaseName}_mavenJava", MavenPublication) {
  132. afterEvaluate {
  133. artifact(file("${project.buildDir}/libs/$archivesBaseName-${version}-maven.jar")) {
  134. builtBy remapMavenJar
  135. }
  136. artifact(sourcesJar) {
  137. builtBy remapSourcesJar
  138. }
  139. }
  140. }
  141. }
  142. repositories {
  143. if (project.hasProperty('danielshe_pass')) {
  144. maven {
  145. url = "http://deploy.modmuss50.me/"
  146. credentials {
  147. username = "danielshe"
  148. password = project.getProperty('danielshe_pass')
  149. }
  150. }
  151. }
  152. }
  153. }
  154. }
  155. task licenseFormatAll
  156. subprojects { licenseFormatAll.dependsOn("${path}:licenseFormat") }
  157. subprojects { rootProject.remapJar.dependsOn("${path}:remapJar") }
  158. task remapMavenJar(type: RemapJarTask, dependsOn: jar) {
  159. afterEvaluate {
  160. input.set(file("${project.buildDir}/libs/${archivesBaseName}-${version}-dev.jar"))
  161. archiveName = "${archivesBaseName}-${version}-maven.jar"
  162. addNestedDependencies.set(false)
  163. }
  164. }
  165. sourceSets {
  166. testmod
  167. }
  168. dependencies {
  169. afterEvaluate {
  170. subprojects.each {
  171. compile project(path: ":${it.name}", configuration: "dev")
  172. include project(path: ":${it.name}", configuration: "remapped")
  173. testmodCompile project("${it.name}:").sourceSets.testmod.output
  174. }
  175. def listAdded = new ArrayList(Arrays.asList((api_exculde as String).split(',')))
  176. def eachDep = { dep ->
  177. for (apiIncludeDepStr in (api_include as String).split(',')) {
  178. if (apiIncludeDepStr.isEmpty()) continue
  179. def apiIncludeGroup = apiIncludeDepStr.split(':')[0]
  180. def apiIncludeDep = apiIncludeDepStr.split(':')[1]
  181. if (dep.module.id.group == apiIncludeGroup && dep.module.id.name.startsWith(apiIncludeDep)) {
  182. def version = dep.module.id.version.indexOf('@') >= 0 ? dep.module.id.version.substring(0, dep.module.id.version.indexOf('@')) : dep.module.id.version
  183. def mavenDep = "${dep.module.id.group}:${dep.module.id.name}:$version"
  184. if (!(mavenDep in listAdded)) {
  185. include(mavenDep) {
  186. transitive = false
  187. }
  188. listAdded.add(mavenDep)
  189. }
  190. break
  191. }
  192. }
  193. }
  194. rootProject.configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each eachDep
  195. rootProject.configurations.runtimeClasspath.resolvedConfiguration.firstLevelModuleDependencies.each eachDep
  196. }
  197. }
  198. def releaseChangelog = "No changelog"
  199. /* Thank you modmenu & fablabs */
  200. task releaseOnCf {
  201. def df = new SimpleDateFormat("yyyy-MM-dd HH:mm")
  202. df.setTimeZone(TimeZone.getTimeZone("UTC"))
  203. def branch
  204. if (System.env.BRANCH_NAME) {
  205. branch = System.env.BRANCH_NAME
  206. branch = branch.substring(branch.lastIndexOf("/") + 1)
  207. } else {
  208. branch = "git rev-parse --abbrev-ref HEAD".execute().in.text.trim()
  209. }
  210. if (branch == "HEAD") {
  211. branch = "git rev-parse --short HEAD".execute().in.text.trim()
  212. }
  213. def time = df.format(new Date())
  214. def changes = new StringBuilder()
  215. 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>"
  216. def proc = "git log --max-count=200 --pretty=format:%s".execute()
  217. proc.in.eachLine { line ->
  218. def processedLine = line.toString()
  219. if (!processedLine.contains("New translations") && !processedLine.contains("Merge") && !processedLine.contains("branch")) {
  220. changes << "<br>- ${processedLine.capitalize()}"
  221. }
  222. }
  223. proc.waitFor()
  224. releaseChangelog = changes.toString()
  225. dependsOn tasks.getByName("curseforge")
  226. }
  227. curseforge {
  228. if (project.hasProperty('danielshe_curse_api_key') || System.getenv('danielshe_curse_api_key') != null) {
  229. apiKey = project.hasProperty('danielshe_curse_api_key') ? project.property('danielshe_curse_api_key') : System.getenv('danielshe_curse_api_key')
  230. project {
  231. id = "310111"
  232. releaseType = "release"
  233. changelogType = "html"
  234. changelog = releaseChangelog
  235. addGameVersion "1.16-Snapshot"
  236. addGameVersion "1.16.2"
  237. addGameVersion "Java 8"
  238. addGameVersion "Fabric"
  239. relations {
  240. requiredDependency "fabric-api"
  241. embeddedLibrary "cloth-api"
  242. embeddedLibrary "cloth-config"
  243. embeddedLibrary "auto-config-updated-api"
  244. }
  245. mainArtifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}.jar")) {
  246. displayName = "[Fabric $project.supported_version] v$project.version"
  247. }
  248. addArtifact(file("${project.buildDir}/libs/${project.archivesBaseName}-${project.version}-sources.jar")) {
  249. displayName = "[Fabric $project.supported_version] v$project.version Sources"
  250. }
  251. afterEvaluate {
  252. uploadTask.dependsOn("build")
  253. }
  254. }
  255. }
  256. options {
  257. forgeGradleIntegration = false
  258. javaVersionAutoDetect = false
  259. }
  260. }
  261. publishing {
  262. publications {
  263. mavenJava(MavenPublication) {
  264. artifact(file("${project.buildDir}/libs/$archivesBaseName-${version}-maven.jar")) {
  265. builtBy remapMavenJar
  266. }
  267. artifact(sourcesJar) {
  268. builtBy remapSourcesJar
  269. }
  270. pom.withXml {
  271. def depsNode = asNode().appendNode("dependencies")
  272. subprojects.each {
  273. def depNode = depsNode.appendNode("dependency")
  274. depNode.appendNode("groupId", it.group)
  275. depNode.appendNode("artifactId", it.name)
  276. depNode.appendNode("version", it.version)
  277. depNode.appendNode("scope", "compile")
  278. }
  279. }
  280. }
  281. }
  282. repositories {
  283. if (project.hasProperty('danielshe_pass')) {
  284. maven {
  285. url = "http://deploy.modmuss50.me/"
  286. credentials {
  287. username = "danielshe"
  288. password = project.getProperty('danielshe_pass')
  289. }
  290. }
  291. }
  292. }
  293. }