Better solution for loom dependencies
This commit is contained in:
parent
1725b91c94
commit
4ddd8fe9de
|
@ -0,0 +1,9 @@
|
|||
package io.gitlab.jfronny.scripts
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.extra
|
||||
|
||||
fun Project.earlyAfterEvaluate(action: Action<Project>) {
|
||||
(extra["earlyAfterEvaluates"] as MutableList<Action<Project>>).add(action)
|
||||
}
|
|
@ -14,12 +14,12 @@ var Project.versionS: String
|
|||
}
|
||||
|
||||
var Project.versionType: VersionType
|
||||
get() = if (extra.has("io.gitlab.jfronny.scripts.getVersionType")) extra["io.gitlab.jfronny.scripts.getVersionType"] as VersionType else VersionType.RELEASE
|
||||
set(value) = extra.set("io.gitlab.jfronny.scripts.getVersionType", value)
|
||||
get() = if (extra.has("versionType")) extra["versionType"] as VersionType else VersionType.RELEASE
|
||||
set(value) = extra.set("versionType", value)
|
||||
|
||||
var Project.changelog: String
|
||||
get() = if (extra.has("io.gitlab.jfronny.scripts.getChangelog")) extra["io.gitlab.jfronny.scripts.getChangelog"].toString() else ""
|
||||
set(value) = extra.set("io.gitlab.jfronny.scripts.getChangelog", value)
|
||||
get() = if (extra.has("changelog")) extra["changelog"].toString() else ""
|
||||
set(value) = extra.set("changelog", value)
|
||||
|
||||
val TaskContainer.deployDebug: Task get() = findByName("deployDebug") ?: register("deployDebug").get().dependsOn(named<DefaultTask>("build").get())
|
||||
val TaskContainer.deployRelease: Task get() = findByName("deployRelease") ?: register("deployRelease").get().dependsOn(deployDebug)
|
|
@ -0,0 +1,12 @@
|
|||
import org.gradle.api.Action
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.extra
|
||||
|
||||
extra["earlyAfterEvaluates"] = ArrayList<Action<Project>>()
|
||||
|
||||
afterEvaluate {
|
||||
(extra["earlyAfterEvaluates"] as List<Action<Project>>).forEach {
|
||||
it.execute(this)
|
||||
}
|
||||
extra["earlyAfterEvaluates"] = null
|
||||
}
|
|
@ -1,32 +1,19 @@
|
|||
package io.gitlab.jfronny.scripts
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension
|
||||
import net.fabricmc.loom.api.LoomGradleExtensionAPI
|
||||
import net.fabricmc.loom.task.RemapJarTask
|
||||
import net.fabricmc.loom.task.UnpickJarTask
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.dsl.DependencyHandler
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.SourceSetContainer
|
||||
import org.gradle.api.tasks.TaskContainer
|
||||
import org.gradle.kotlin.dsl.named
|
||||
|
||||
val Project.loom: LoomGradleExtensionAPI get() = LoomGradleExtension.get(this)
|
||||
fun Project.loom(configure: Action<LoomGradleExtensionAPI>) = extensions.configure("loom", configure)
|
||||
|
||||
fun DependencyHandler.minecraft(dependencyNotation: Any) = add("minecraft", dependencyNotation)
|
||||
fun DependencyHandler.mappings(dependencyNotation: Any) = add("mappings", dependencyNotation)
|
||||
fun DependencyHandler.modImplementation(dependencyNotation: Any) = add("modImplementation", dependencyNotation)
|
||||
fun DependencyHandler.testmodImplementation(dependencyNotation: Any) = add("testmodImplementation", dependencyNotation)
|
||||
fun DependencyHandler.clientImplementation(dependencyNotation: Any) = add("clientImplementation", dependencyNotation)
|
||||
|
||||
val SourceSetContainer.main get() = named<SourceSet>("main")
|
||||
val SourceSetContainer.client get() = named<SourceSet>("client")
|
||||
val SourceSetContainer.testmod get() = named<SourceSet>("testmod")
|
||||
|
||||
fun TaskContainer.remapJar(configure: RemapJarTask.() -> Unit) = named<RemapJarTask>("remapJar").configure(configure)
|
||||
val TaskContainer.genClientOnlySources get() = named<DefaultTask>("genClientOnlySources")
|
||||
val TaskContainer.genCommonSources get() = named<DefaultTask>("genCommonSources")
|
||||
val TaskContainer.unpickClientOnlyJar get() = named<UnpickJarTask>("unpickClientOnlyJar")
|
||||
|
|
|
@ -11,30 +11,15 @@ import org.gradle.kotlin.dsl.*
|
|||
import java.io.File
|
||||
|
||||
plugins {
|
||||
id("jf.earlyafterevaluate")
|
||||
idea
|
||||
`java-library`
|
||||
`maven-publish`
|
||||
id("fabric-loom")
|
||||
id("com.github.johnrengelman.shadow")
|
||||
}
|
||||
|
||||
val devlibs = File(project.buildDir, "devlibs")
|
||||
val args = extensions.create<LomExtension>("lom")
|
||||
|
||||
afterEvaluate {
|
||||
// Needs to be registered before loom to properly set things up
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:${args.minecraftVersion.get()}")
|
||||
if (args.yarnBuild != null) mappings("net.fabricmc:yarn:${args.minecraftVersion.get()}+${args.yarnBuild}:v2")
|
||||
else loom.officialMojangMappings()
|
||||
modImplementation("net.fabricmc:fabric-loader:${args.loaderVersion.get()}")
|
||||
|
||||
testmodImplementation(sourceSets.main.get().output)
|
||||
testmodImplementation(sourceSets.client.get().output)
|
||||
}
|
||||
}
|
||||
|
||||
// Apply loom manually to ensure the afterEvaluate block above is done before looms are called
|
||||
apply(plugin = "fabric-loom")
|
||||
|
||||
// Configure loom for stricter dev env
|
||||
loom {
|
||||
|
@ -113,6 +98,20 @@ repositories {
|
|||
mavenLocal()
|
||||
}
|
||||
|
||||
// Register common dependencies
|
||||
val args = extensions.create<LomExtension>("lom")
|
||||
earlyAfterEvaluate {
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:${args.minecraftVersion.get()}")
|
||||
if (args.yarnBuild != null) mappings("net.fabricmc:yarn:${args.minecraftVersion.get()}+${args.yarnBuild}:v2")
|
||||
else loom.officialMojangMappings()
|
||||
modImplementation("net.fabricmc:fabric-loader:${args.loaderVersion.get()}")
|
||||
|
||||
testmodImplementation(sourceSets.main.get().output)
|
||||
testmodImplementation(sourceSets.client.get().output)
|
||||
}
|
||||
}
|
||||
|
||||
// Mark normal jars as -dev
|
||||
tasks.jar.get().archiveClassifier.set("dev")
|
||||
|
||||
|
|
Loading…
Reference in New Issue