import io.gitlab.jfronny.scripts.* plugins { java } extra["codeGenerators"] = LinkedHashMap() val jfCodegen by tasks.registering { doLast { val generators = project.extra["codeGenerators"] as LinkedHashMap if (codegenDir.exists()) codegenDir.deleteRecursively() generators.forEach { (name, generated) -> generated.classes.forEach { (filePath, content) -> val path = codegenDir.resolve("java").resolve(name).resolve(filePath) path.parentFile.mkdirs() path.writeText(content) } generated.resources.forEach { (filePath, content) -> val path = codegenDir.resolve("resources").resolve(name).resolve(filePath) path.parentFile.mkdirs() path.writeBytes(content) } } project.extra["codeGenerators"] = null } } tasks.compileJava { dependsOn(jfCodegen.get()) } tasks.processResources { dependsOn(jfCodegen.get()) }