From 8b7dc78a5dca3abb0fddd00b052899c8b46bedd1 Mon Sep 17 00:00:00 2001
From: Him188 <Him188@mamoe.net>
Date: Sat, 27 Mar 2021 19:27:30 +0800
Subject: [PATCH] Improve BuildMiraiPluginTask

---
 .../gradle-plugin/src/BuildMiraiPluginTask.kt | 31 +++++++++++++------
 .../src/MiraiConsoleGradlePlugin.kt           |  3 +-
 2 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/tools/gradle-plugin/src/BuildMiraiPluginTask.kt b/tools/gradle-plugin/src/BuildMiraiPluginTask.kt
index 0361e0331..4f804a723 100644
--- a/tools/gradle-plugin/src/BuildMiraiPluginTask.kt
+++ b/tools/gradle-plugin/src/BuildMiraiPluginTask.kt
@@ -1,24 +1,37 @@
+/*
+ * Copyright 2019-2021 Mamoe Technologies and contributors.
+ *
+ *  此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
+ *  Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
+ *
+ *  https://github.com/mamoe/mirai/blob/master/LICENSE
+ */
+
 package net.mamoe.mirai.console.gradle
 
 import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
 import org.gradle.api.tasks.CacheableTask
 import org.gradle.api.tasks.Internal
+import org.gradle.api.tasks.OutputFile
 import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
 import java.io.File
 
 @CacheableTask
-public open class BuildMiraiPluginTask : ShadowJar() {
-    @Internal
-    public var targetField: KotlinTarget? = null
-
-    @get:Internal
-    public val target: KotlinTarget
-        get() = targetField!!
-
+public open class BuildMiraiPluginTask(
+    @field:Internal
+    internal val target: KotlinTarget
+) : ShadowJar() {
     /**
      * ShadowJar 打包结果
      */
-    @get:Internal
+    @get:OutputFile
     public val output: File
         get() = outputs.files.singleFile
+
+    public companion object {
+        /**
+         * Kotlin 单平台或 Java 时的默认 task 名.
+         */
+        public const val DEFAULT_NAME: String = "buildPlugin"
+    }
 }
\ No newline at end of file
diff --git a/tools/gradle-plugin/src/MiraiConsoleGradlePlugin.kt b/tools/gradle-plugin/src/MiraiConsoleGradlePlugin.kt
index 30cfefb41..2b692ed2d 100644
--- a/tools/gradle-plugin/src/MiraiConsoleGradlePlugin.kt
+++ b/tools/gradle-plugin/src/MiraiConsoleGradlePlugin.kt
@@ -102,9 +102,8 @@ public class MiraiConsoleGradlePlugin : Plugin<Project> {
         tasks.findByName("shadowJar")?.enabled = false
 
         fun registerBuildPluginTask(target: KotlinTarget, isSingleTarget: Boolean) {
-            tasks.create("buildPlugin".wrapNameWithPlatform(target, isSingleTarget), BuildMiraiPluginTask::class.java).apply shadow@{
+            tasks.create("buildPlugin".wrapNameWithPlatform(target, isSingleTarget), BuildMiraiPluginTask::class.java, target).apply shadow@{
                 group = "mirai"
-                targetField = target
 
                 archiveExtension.set("mirai.jar")