diff --git a/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt b/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt index f452519..bd851a0 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/GeneratePluginDescription.kt @@ -18,16 +18,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.artifacts.repositories.MavenArtifactRepository import org.gradle.api.artifacts.repositories.UrlArtifactRepository import org.gradle.api.artifacts.result.ResolvedComponentResult import org.gradle.api.file.DirectoryProperty +import org.gradle.api.provider.ListProperty +import org.gradle.api.provider.MapProperty import org.gradle.api.provider.Property -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.Nested -import org.gradle.api.tasks.Optional -import org.gradle.api.tasks.OutputDirectory -import org.gradle.api.tasks.TaskAction +import org.gradle.api.tasks.* abstract class GeneratePluginDescription : DefaultTask() { @@ -37,6 +34,9 @@ abstract class GeneratePluginDescription : DefaultTask() { @get:Input abstract val librariesJsonFileName: Property + @get:Input + abstract val repos: MapProperty + @get:Input @get:Optional abstract val librariesRootComponent: Property @@ -57,8 +57,12 @@ abstract class GeneratePluginDescription : DefaultTask() { val module = SimpleModule() @Suppress("UNCHECKED_CAST") // Too stupid to figure out the generics here... - module.addSerializer(StdDelegatingSerializer(NamedDomainObjectCollection::class.java, - NamedDomainObjectCollectionConverter as Converter, *>)) + module.addSerializer( + StdDelegatingSerializer( + NamedDomainObjectCollection::class.java, + NamedDomainObjectCollectionConverter as Converter, *> + ) + ) module.addSerializer(StdDelegatingSerializer(UrlArtifactRepository::class.java, UrlArtifactRepositoryConverter)) val mapper = ObjectMapper(factory) @@ -69,9 +73,8 @@ abstract class GeneratePluginDescription : DefaultTask() { mapper.writeValue(outputDirectory.file(fileName).get().asFile, pluginDescription) if (pluginDescription.generateLibrariesJson) { - val repos = this.project.repositories.withType(MavenArtifactRepository::class.java) val dependencies = librariesRootComponent.orNull.collectLibraries() - val pluginLibraries = PluginLibraries(repos, dependencies) + val pluginLibraries = PluginLibraries(repos.get(), dependencies) val jsonMapper = ObjectMapper() .registerKotlinModule() @@ -93,7 +96,7 @@ abstract class GeneratePluginDescription : DefaultTask() { } data class PluginLibraries( - val repositories: NamedDomainObjectCollection, + val repositories: Map, val dependencies: List ) diff --git a/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt b/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt index 0533d56..b7e4d0c 100644 --- a/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt +++ b/src/main/kotlin/net/minecrell/pluginyml/PlatformPlugin.kt @@ -9,6 +9,7 @@ package net.minecrell.pluginyml import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.artifacts.repositories.MavenArtifactRepository import org.gradle.api.artifacts.result.ResolvedComponentResult import org.gradle.api.plugins.JavaPlugin import org.gradle.api.tasks.SourceSet @@ -17,7 +18,8 @@ import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType -abstract class PlatformPlugin(private val platformName: String, private val fileName: String) : Plugin { +abstract class PlatformPlugin(private val platformName: String, private val fileName: String) : + Plugin { protected abstract fun createExtension(project: Project): T @@ -42,6 +44,10 @@ abstract class PlatformPlugin(private val platformName: S fileName.set(this@PlatformPlugin.fileName) librariesJsonFileName.set("$prefix-libraries.json") librariesRootComponent.set(libraries.incoming.resolutionResult.root) + repos.set( + project.repositories.withType(MavenArtifactRepository::class.java) + .associate { Pair(it.name, it.url.toString()) } + ) outputDirectory.set(generatedResourcesDirectory) pluginDescription.set(provider { setDefaults(project, description)