diff --git a/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt b/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt index 8cf9cd9..456b759 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt @@ -35,14 +35,13 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLGenerator import com.fasterxml.jackson.module.kotlin.registerKotlinModule import org.gradle.api.DefaultTask import org.gradle.api.NamedDomainObjectCollection +import org.gradle.api.file.DirectoryProperty import org.gradle.api.provider.Property -import org.gradle.api.provider.Provider import org.gradle.api.tasks.Input import org.gradle.api.tasks.Nested -import org.gradle.api.tasks.OutputFile +import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction import org.gradle.kotlin.dsl.property -import java.io.File open class GeneratePluginDescription : DefaultTask() { @@ -52,8 +51,8 @@ open class GeneratePluginDescription : DefaultTask() { @Nested val pluginDescription: Property = project.objects.property() - val outputFile: Provider - @OutputFile get() = fileName.map { File(temporaryDir, it) } + @OutputDirectory + val outputDirectory: DirectoryProperty = project.objects.directoryProperty() @TaskAction fun generate() { @@ -72,7 +71,7 @@ open class GeneratePluginDescription : DefaultTask() { .registerModule(module) .setSerializationInclusion(JsonInclude.Include.NON_EMPTY) - mapper.writeValue(outputFile.get(), pluginDescription.get()) + mapper.writeValue(outputDirectory.file(fileName).get().asFile, pluginDescription.get()) } object NamedDomainObjectCollectionConverter : StdConverter, Map>() { diff --git a/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt b/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt index f5913c3..4ce53a1 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt @@ -27,9 +27,10 @@ package net.minecrell.pluginyml import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.plugins.JavaPlugin -import org.gradle.api.tasks.AbstractCopyTask -import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register +import org.gradle.api.tasks.SourceSet +import org.gradle.api.tasks.SourceSetContainer +import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.withType abstract class PlatformPlugin(private val platformName: String, private val fileName: String) : Plugin { @@ -43,9 +44,12 @@ abstract class PlatformPlugin(private val platformName: S // Add extension extensions.add(platformName.decapitalize(), description) + val generatedResourcesDirectory = layout.buildDirectory.dir("generated/plugin-yml/$platformName") + // Create task val generateTask = tasks.register("generate${platformName}PluginDescription") { fileName.set(this@PlatformPlugin.fileName) + outputDirectory.set(generatedResourcesDirectory) pluginDescription.set(provider { setDefaults(project, description) description @@ -57,8 +61,8 @@ abstract class PlatformPlugin(private val platformName: S } plugins.withType { - tasks.named("processResources") { - from(generateTask) + extensions.getByType().named(SourceSet.MAIN_SOURCE_SET_NAME) { + resources.srcDir(generateTask) } } }