import io.gitlab.jfronny.scripts.* import org.gradle.api.tasks.compile.JavaCompile import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.withType plugins { id("jf.maven-publish") id("lom") } val args = extensions.create("jfModule") val isRoot = project == rootProject val rootArgs get() = rootProject.extensions.getByName("jfMod"); insertEarlyAfterEvaluate { args.check(project) if (!isRoot) versionS = rootProject.versionS lom { copyFrom(rootArgs) } if (rootArgs.libJfVersion.isPresent) { dependencies { clientAnnotationProcessor(annotationProcessor("io.gitlab.jfronny.libjf:libjf-config-compiler-plugin-v2:${rootArgs.libJfVersion.get()}")!!) } tasks.withType { options.compilerArgs.add("-AmodId=" + base.archivesName.get()) } } } afterEvaluate { rootProject.allprojects.forEach { sub -> if (sub != this && rootArgs.isMod(sub)) { 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()) } } } } } } val devOnly = args.devOnly.getOrElse(false) if (!isRoot && !devOnly && !sourceSets.testmod.get().resources.isEmpty) { //TODO register testmods of subprojects as testmodInclude automatically // val configuration = configurations.create("testmodJar").name // val testmodJarTask = tasks.named("testmodJar").get() // artifacts.add(configuration, testmodJarTask.archiveFile.get().asFile) { // type = "jar" // builtBy(testmodJarTask) // } // // self.dependencies { // testmodInclude(project(mapOf("path" to path, "configuration" to configuration))) // } } if (!isRoot) rootProject.dependencies { api(project(mapOf("path" to project.path, "configuration" to "shadow"))) clientImplementation(sourceSets.client.get().output) testmodImplementation(sourceSets.testmod.get().output) if (!devOnly) include(project) } } if (!isRoot) { rootProject.tasks.deployDebug.dependsOn(tasks.deployDebug) rootProject.tasks.deployRelease.dependsOn(tasks.deployRelease) tasks.named("javadoc") { enabled = false } }