· 5 years ago · Feb 12, 2021, 04:08 PM
1import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
2import net.fabricmc.loom.task.RemapJarTask
3import net.fabricmc.loom.task.RemapSourcesJarTask
4import net.fabricmc.loom.task.RunClientTask
5import net.fabricmc.loom.task.RunServerTask
6import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
7
8plugins {
9 id("fabric-loom") version "0.5-SNAPSHOT" apply false
10 kotlin("jvm") version "1.4.30"
11 `maven-publish`
12 id("net.minecrell.licenser") version "0.4.1"
13 id("com.github.johnrengelman.shadow") version "5.2.0"
14}
15
16fun prop(key: String): String =
17 properties[key] as? String ?: throw IllegalArgumentException("No value for $key found!")
18
19base.archivesBaseName = "nylium"
20group = "io.github.nyliumpowered.nylium"
21version = prop("version")
22
23val javaVersion = JavaVersion.VERSION_1_8.toString()
24val minecraftVersion = prop("minecraft_version")
25val yarnMappings = prop("yarn_mappings")
26val loaderVersion = prop("loader_version")
27val fabricVersion = prop("fabric_version")
28
29val fabricKotlinVersion = prop("fabric_kotlin_version")
30
31logger.lifecycle(
32 """
33 Running $name task for Nylium $version
34
35 Fabric:
36 Loader: $loaderVersion
37 Yarn: $yarnMappings
38 API: $fabricVersion
39 Minecraft: $minecraftVersion
40 """.trimIndent()
41)
42
43allprojects {
44 apply(plugin = "fabric-loom")
45 apply(plugin = "org.jetbrains.kotlin.jvm")
46 apply(plugin = "maven-publish")
47 apply(plugin = "net.minecrell.licenser")
48 apply(plugin = "com.github.johnrengelman.shadow")
49
50 version = rootProject.version
51 group = rootProject.group
52 buildDir = rootProject.buildDir
53
54 license {
55 header = rootProject.file("HEADER")
56 include("**/*.java", "**/*.kt")
57 }
58
59 tasks.getByName<RemapJarTask>("remapJar") { enabled = false }
60 val sourcesJar = tasks.create<Jar>("sourcesJar") {
61 archiveClassifier.set("sources")
62 archiveClassifier.convention("sources")
63 from(sourceSets["main"].allSource)
64 }
65 val remapSourcesJar = tasks.getByName<RemapSourcesJarTask>("remapSourcesJar") { enabled = false }
66 val remapMavenJar = tasks.getByName<RemapJarTask>("remapMavenJar")
67 val shadowJar = tasks.getByName<ShadowJar>("shadowJar")
68 val remapShadowJar = tasks.getByName<RemapJarTask>("remapShadowJar")
69
70 tasks.create<RemapJarTask>("remapShadowJar") {
71 afterEvaluate {
72 input.set(file("${project.buildDir}/libs/${base.archivesBaseName}-${rootProject.version}-dev.jar"))
73 archiveFileName.set("${base.archivesBaseName}-${project.version}.jar")
74 addNestedDependencies.set(true)
75 remapAccessWidener.set(true)
76 }
77 }
78
79 tasks.create<RemapJarTask>("remapMavenJar") {
80 afterEvaluate {
81 input.set(file("${project.buildDir}/libs/${base.archivesBaseName}-${rootProject.version}-dev.jar"))
82 archiveFileName.set("${base.archivesBaseName}-${project.version}-maven.jar")
83 addNestedDependencies.set(false)
84 remapAccessWidener.set(true)
85 }
86 }
87
88 val shade = configurations.getByName("shade")
89 val modShade = configurations.getByName("modShade")
90
91 configurations {
92 getByName("dev")
93 compileOnly.get().extendsFrom(shade)
94 compileOnly.get().extendsFrom(getByName("shadeSource"))
95 getByName("modCompileOnly").extendsFrom(modShade)
96 }
97
98 tasks.withType<ShadowJar> {
99 enabled = true
100 configurations = listOf(shade, modShade)
101 archiveClassifier.convention("dev")
102 archiveClassifier.set("dev")
103 }
104
105 repositories {
106 mavenCentral()
107 jcenter()
108 maven(url = "https://oss.sonatype.org/content/repositories/snapshots/") {
109 name = "sonatype-oss-snapshots"
110 }
111 }
112
113 dependencies {
114 val modImplementation by configurations
115
116 "minecraft"("com.mojang:minecraft:$minecraftVersion") {
117 isTransitive = false
118 }
119 "mappings"("net.fabricmc:yarn:$yarnMappings:v2")
120
121 modImplementation(group = "net.fabricmc", name = "fabric-loader", version = loaderVersion)
122 modImplementation(group = "net.fabricmc", name = "fabric-api", version = fabricVersion)
123 modImplementation(group = "net.fabricmc", name = "fabric-language-kotlin", version = fabricKotlinVersion)
124
125 modImplementation(group = "net.kyori", name = "adventure-platform-fabric", version = prop("adventure-fabric"))
126 implementation(group = "net.kyori", name = "adventure-text-minimessage", version = prop("adventure-fabric"))
127
128 implementation(group = "com.google.inject", name = "guice", version = prop("guice"))
129 implementation(group = "com.google.guava", name = "guava", version = "${prop("guava")}-jre")
130
131 implementation(group = "org.spongepowered", name = "configurate", version = prop("configurate"))
132 implementation(group = "org.spongepowered", name = "configurate-extra-kotlin", version = prop("configurate"))
133 }
134
135 tasks.getByName("build").dependsOn(shadowJar, remapShadowJar, sourcesJar, remapSourcesJar)
136 rootProject.tasks.getByName<PublishToMavenLocal>("publish")
137 .dependsOn(shadowJar, remapMavenJar, sourcesJar, remapSourcesJar)
138
139 tasks.withType<KotlinCompile> {
140 kotlinOptions.jvmTarget = javaVersion
141 }
142
143 tasks.withType<JavaCompile> {
144 sourceCompatibility = javaVersion
145 targetCompatibility = javaVersion
146 options.encoding = "UTF-8"
147 }
148}
149
150dependencies {
151 val modRuntime by configurations
152
153 modRuntime(group = "net.fabricmc", name = "fabric-language-kotlin", version = fabricKotlinVersion)
154
155 subprojects.forEach {
156 shadow(project(path = it.name, configuration = "shadow"))
157 }
158}
159
160project("nylium-base") {
161 tasks.withType<ProcessResources> {
162 filesMatching("fabric.mod.json") {
163 expand(
164 mapOf(
165 "version" to version.toString(),
166 "fabric_api" to fabricVersion
167 )
168 )
169 }
170 }
171}
172
173subprojects {
174 tasks.withType<RunClientTask> { enabled = false }
175 tasks.withType<RunServerTask> { enabled = false }
176}
177
178setOf(
179 "runClient",
180 "jar",
181 "remapJar",
182 "sourcesJar",
183 "shadowJar",
184 "remapJar",
185 "remapSourcesJar",
186 "remapShadowJar",
187 "remapMavenJar"
188).forEach {
189 tasks.getByName(it).enabled = false
190}
191