plugins { `maven-publish` id("de.siphalor.tweed5.publishing") id("de.siphalor.tweed5.minecraft.mod.base") } configurations.minecraftModApiElements { extendsFrom(configurations.implementation.get()) exclude("commons-logging", "commons-logging") } val minecraftModJar = tasks.register("minecraftModJar") { group = LifecycleBasePlugin.BUILD_GROUP dependsOn(tasks.shadowJar) dependsOn(tasks.named("processMinecraftModResources")) from(zipTree(tasks.shadowJar.get().archiveFile)) from(project.layout.buildDirectory.dir("minecraftModResources")) destinationDirectory.set(layout.buildDirectory.dir("minecraftModLibs")) } tasks.assemble { dependsOn(minecraftModJar) } val minecraftModSourcesJar = tasks.register("minecraftModSourcesJar") { group = LifecycleBasePlugin.BUILD_GROUP dependsOn(tasks.named("sourcesJar")) dependsOn(tasks.named("processMinecraftModResources")) val sourcesJar = objects.fileCollection().from(tasks.named("sourcesJar").map { it.archiveFile }) inputs.files(sourcesJar) from(sourcesJar.map { zipTree(it) }) from(project.layout.buildDirectory.dir("minecraftModResources")) archiveClassifier = "sources" destinationDirectory.set(layout.buildDirectory.dir("minecraftModLibs")) } artifacts.add("minecraftModElements", minecraftModJar) artifacts.add("minecraftModApiElements", minecraftModJar) artifacts.add("minecraftModSourcesElements", minecraftModSourcesJar) publishing { publications { create("minecraftMod") { val projectGroup = project.group.toString() groupId = if (projectGroup.endsWith(".minecraft")) projectGroup else "$projectGroup.minecraft" artifactId = project.name version = project.version.toString() from(components["minecraftMod"]) } } }