Better solution for loom dependencies

This commit is contained in:
Johannes Frohnmeyer 2022-10-07 19:05:03 +02:00
parent 1725b91c94
commit 4ddd8fe9de
Signed by: Johannes
GPG Key ID: E76429612C2929F4
5 changed files with 41 additions and 34 deletions

View File

@ -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)
}

View File

@ -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)

View File

@ -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
}

View File

@ -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")

View File

@ -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")