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
|
var Project.versionType: VersionType
|
||||||
get() = if (extra.has("io.gitlab.jfronny.scripts.getVersionType")) extra["io.gitlab.jfronny.scripts.getVersionType"] as VersionType else VersionType.RELEASE
|
get() = if (extra.has("versionType")) extra["versionType"] as VersionType else VersionType.RELEASE
|
||||||
set(value) = extra.set("io.gitlab.jfronny.scripts.getVersionType", value)
|
set(value) = extra.set("versionType", value)
|
||||||
|
|
||||||
var Project.changelog: String
|
var Project.changelog: String
|
||||||
get() = if (extra.has("io.gitlab.jfronny.scripts.getChangelog")) extra["io.gitlab.jfronny.scripts.getChangelog"].toString() else ""
|
get() = if (extra.has("changelog")) extra["changelog"].toString() else ""
|
||||||
set(value) = extra.set("io.gitlab.jfronny.scripts.getChangelog", value)
|
set(value) = extra.set("changelog", value)
|
||||||
|
|
||||||
val TaskContainer.deployDebug: Task get() = findByName("deployDebug") ?: register("deployDebug").get().dependsOn(named<DefaultTask>("build").get())
|
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)
|
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
|
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 net.fabricmc.loom.task.UnpickJarTask
|
||||||
import org.gradle.api.Action
|
|
||||||
import org.gradle.api.DefaultTask
|
import org.gradle.api.DefaultTask
|
||||||
import org.gradle.api.Project
|
|
||||||
import org.gradle.api.artifacts.dsl.DependencyHandler
|
import org.gradle.api.artifacts.dsl.DependencyHandler
|
||||||
import org.gradle.api.tasks.SourceSet
|
import org.gradle.api.tasks.SourceSet
|
||||||
import org.gradle.api.tasks.SourceSetContainer
|
import org.gradle.api.tasks.SourceSetContainer
|
||||||
import org.gradle.api.tasks.TaskContainer
|
import org.gradle.api.tasks.TaskContainer
|
||||||
import org.gradle.kotlin.dsl.named
|
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.testmodImplementation(dependencyNotation: Any) = add("testmodImplementation", dependencyNotation)
|
||||||
fun DependencyHandler.clientImplementation(dependencyNotation: Any) = add("clientImplementation", 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.client get() = named<SourceSet>("client")
|
||||||
val SourceSetContainer.testmod get() = named<SourceSet>("testmod")
|
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.genClientOnlySources get() = named<DefaultTask>("genClientOnlySources")
|
||||||
val TaskContainer.genCommonSources get() = named<DefaultTask>("genCommonSources")
|
val TaskContainer.genCommonSources get() = named<DefaultTask>("genCommonSources")
|
||||||
val TaskContainer.unpickClientOnlyJar get() = named<UnpickJarTask>("unpickClientOnlyJar")
|
val TaskContainer.unpickClientOnlyJar get() = named<UnpickJarTask>("unpickClientOnlyJar")
|
||||||
|
|
|
@ -11,30 +11,15 @@ import org.gradle.kotlin.dsl.*
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
|
id("jf.earlyafterevaluate")
|
||||||
idea
|
idea
|
||||||
`java-library`
|
`java-library`
|
||||||
`maven-publish`
|
`maven-publish`
|
||||||
|
id("fabric-loom")
|
||||||
id("com.github.johnrengelman.shadow")
|
id("com.github.johnrengelman.shadow")
|
||||||
}
|
}
|
||||||
|
|
||||||
val devlibs = File(project.buildDir, "devlibs")
|
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
|
// Configure loom for stricter dev env
|
||||||
loom {
|
loom {
|
||||||
|
@ -113,6 +98,20 @@ repositories {
|
||||||
mavenLocal()
|
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
|
// Mark normal jars as -dev
|
||||||
tasks.jar.get().archiveClassifier.set("dev")
|
tasks.jar.get().archiveClassifier.set("dev")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue