11package org.allaymc.gradle.plugin
22
3- import org.allaymc.gradle.plugin.descriptor.descriptorInject
3+ import org.allaymc.gradle.plugin.dsl.AllayDslExtension
4+ import org.allaymc.gradle.plugin.tasks.GeneratePluginDescriptorTask
5+ import org.allaymc.gradle.plugin.tasks.RunServerTask
6+ import org.allaymc.gradle.plugin.tasks.ShadowJarTask
47import org.gradle.api.Plugin
58import org.gradle.api.Project
6- import org.gradle.api.tasks.SourceSetContainer
79import org.gradle.jvm.tasks.Jar
8- import org.gradle.kotlin.dsl.*
10+ import org.gradle.kotlin.dsl.dependencies
11+ import org.gradle.kotlin.dsl.maven
12+ import org.gradle.kotlin.dsl.register
13+ import org.gradle.kotlin.dsl.repositories
914
1015class AllayPlugin : Plugin <Project > {
1116 override fun apply (project : Project ) {
12- val extension = project.extensions.create(" allay" , AllayExtension ::class .java, project.objects)
17+ val extension = project.extensions.create(" allay" , AllayDslExtension ::class .java, project.objects)
1318
1419 project.repositories {
1520 mavenCentral()
@@ -30,7 +35,7 @@ class AllayPlugin : Plugin<Project> {
3035 project.afterEvaluate { afterEvaluate(project, extension) }
3136 }
3237
33- private fun afterEvaluate (project : Project , extension : AllayExtension ) {
38+ private fun afterEvaluate (project : Project , extension : AllayDslExtension ) {
3439 val api = extension.api.orNull
3540 val server = extension.server.orNull
3641
@@ -41,8 +46,8 @@ class AllayPlugin : Plugin<Project> {
4146 }
4247
4348 val dependency = if (! extension.apiOnly.get())
44- " ${Constant .DEPENDENCY_GROUP } :server:${server} "
45- else " ${Constant .DEPENDENCY_GROUP } :api:${api} "
49+ " ${Constants .DEPENDENCY_GROUP } :server:${server} "
50+ else " ${Constants .DEPENDENCY_GROUP } :api:${api} "
4651 project.dependencies {
4752 add(" compileOnly" , dependency)
4853 }
@@ -53,31 +58,36 @@ class AllayPlugin : Plugin<Project> {
5358 ) {
5459 project.tasks.named(" shadowJar" , Jar ::class .java)
5560 } else {
56- createShadowJarImplement( project)
61+ project.tasks.register< ShadowJarTask >( " shadowJar " )
5762 }
5863
5964 project.tasks.register<RunServerTask >(" runServer" ) {
60- group = Constant .TASK_GROUP
6165 dependsOn(shadowJarTask)
6266 pluginJar.set(shadowJarTask.flatMap { it.archiveFile })
6367 serverVersion.set(server)
6468 }
6569
66- if (extension.descriptorInjection.get()) {
67- descriptorInject(project, extension)
68- }
69- }
70+ if (extension.generatePluginDescriptor.get()) {
71+ val generatePluginDescriptorTask = project.tasks.register<GeneratePluginDescriptorTask >(" generatePluginDescriptor" ) {
72+ outputFile.set(project.layout.buildDirectory.file(" resources/main/plugin.json" ))
73+
74+ pluginEntrance.set(extension.plugin.entrance)
75+ pluginName.set(extension.plugin.name)
76+ pluginVersion.set(extension.plugin.version)
77+ pluginAuthors.set(extension.plugin.authors)
78+ pluginApiVersion.set(extension.plugin.apiVersion)
79+ pluginDescription.set(extension.plugin.description)
80+ pluginDependencies.set(extension.plugin.dependencies)
81+ pluginWebsite.set(extension.plugin.website)
7082
71- private fun createShadowJarImplement (project : Project ) = project.tasks.register(" shadowJar" , Jar ::class .java) {
72- group = Constant .TASK_GROUP
73- archiveClassifier.set(" shaded" )
74- val sourceSets = project.extensions.getByType(SourceSetContainer ::class .java)
75- from(sourceSets.getByName(" main" ).output)
76- val runtimeClasspath = project.configurations.getByName(" runtimeClasspath" )
77- from({
78- runtimeClasspath.filter { it.exists() }.map {
79- if (it.isDirectory) it else project.zipTree(it)
83+ projectName.set(project.name)
84+ projectVersion.set(project.version.toString())
85+ projectDescription.set(project.description)
8086 }
81- })
87+
88+ project.tasks.named(" processResources" ) {
89+ dependsOn(generatePluginDescriptorTask)
90+ }
91+ }
8292 }
8393}
0 commit comments