Scripts/jfmod/src/main/kotlin/jfmod.gradle.kts

116 lines
3.8 KiB
Plaintext

import io.gitlab.jfronny.scripts.*
plugins {
id("jf.autoversion")
id("jf.maven-publish")
id("lom")
}
//TODO test libjf-config-compiler-plugin integration
if (project.hasProperty("libjf_version")) {
buildscript {
repositories {
maven {
name = "JF Commons"
url = uri("https://gitlab.com/api/v4/projects/35745143/packages/maven")
}
maven {
name = "LibJF"
url = uri("https://gitlab.com/api/v4/projects/25805200/packages/maven")
}
}
dependencies {
classpath("io.gitlab.jfronny.libjf:libjf-config-compiler-plugin:${prop("libjf_version")}")
}
}
}
val devOnlyModules by extra(prop("dev_only_module", "").split(", ", ",").filter { it.isNotBlank() })
val nonModSubprojects by extra(prop("non_mod_project", "").split(", ", ",").filter { it.isNotBlank() })
val self = project
if (hasProperty("maven_group")) group = prop("maven_group")
allprojects {
if (name in nonModSubprojects) return@allprojects
group = self.group
version = self.version
apply(plugin = "jf.maven-publish")
apply(plugin = "lom")
if (self.hasProperty("libjf_version")) apply(plugin = "io.gitlab.jfronny.libjf.libjf-config-compiler-plugin")
base {
archivesName.set(prop("archives_base_name", archivesName.get()))
}
lom {
minecraftVersion.set(prop("minecraft_version"))
loaderVersion.set(prop("loader_version"))
if (hasProperty("yarn_mappings")) yarn(prop("yarn_mappings"))
else mojmap()
}
afterEvaluate {
self.allprojects.forEach { sub ->
if (sub != this && sub.name !in nonModSubprojects) {
loom {
mods {
register(sub.name) {
sourceSet(sub.sourceSets.main.get())
sourceSet(sub.sourceSets.client.get())
}
if (!sourceSets.testmod.get().resources.isEmpty) {
register("${sub.name}-testmod") {
sourceSet(sub.sourceSets.testmod.get())
}
}
}
}
}
}
}
}
subprojects {
if (name in nonModSubprojects) return@subprojects
self.tasks.deployDebug.dependsOn(tasks.deployDebug)
self.tasks.deployRelease.dependsOn(tasks.deployRelease)
tasks.named("javadoc").get().enabled = false
if (name !in devOnlyModules && !sourceSets.testmod.get().resources.isEmpty) {
//TODO register testmods of subprojects as testmodInclude automatically
// val configuration = configurations.create("testmodJar").name
// val testmodJarTask = tasks.named<Jar>("testmodJar").get()
// artifacts.add(configuration, testmodJarTask.archiveFile.get().asFile) {
// type = "jar"
// builtBy(testmodJarTask)
// }
//
// self.dependencies {
// testmodInclude(project(mapOf("path" to path, "configuration" to configuration)))
// }
}
self.dependencies {
api(project(mapOf("path" to project.path, "configuration" to "shadow")))
clientImplementation(sourceSets.client.get().output)
testmodImplementation(sourceSets.testmod.get().output)
if (name !in devOnlyModules) include(project)
}
afterEvaluate {
tasks.genClientOnlySources.get().enabled = false
tasks.genCommonSources.get().enabled = false
tasks.unpickClientOnlyJar.get().enabled = false
tasks.unpickCommonJar.get().enabled = false
}
}
if (hasProperty("curseforge_id")) apply(plugin = "jfmod.curseforge")
if (hasProperty("modrinth_id")) apply(plugin = "jfmod.modrinth")