From 28c2309fbbd31156786f3634ae43666c17519a4a Mon Sep 17 00:00:00 2001
From: Karlatemp <karlatemp@vip.qq.com>
Date: Wed, 23 Jun 2021 14:57:34 +0800
Subject: [PATCH] Add version info in `META-INF/MANIFEST.MF` (#1355)

---
 build.gradle.kts                             |  1 +
 buildSrc/src/main/kotlin/ProjectConfigure.kt | 13 +++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/build.gradle.kts b/build.gradle.kts
index 353827937..90cd30be2 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -101,6 +101,7 @@ allprojects {
         if (isKotlinJvmProject) {
             configureFlattenSourceSets()
         }
+        configureJarManifest()
     }
 }
 
diff --git a/buildSrc/src/main/kotlin/ProjectConfigure.kt b/buildSrc/src/main/kotlin/ProjectConfigure.kt
index 37ed639c0..5c10712f8 100644
--- a/buildSrc/src/main/kotlin/ProjectConfigure.kt
+++ b/buildSrc/src/main/kotlin/ProjectConfigure.kt
@@ -14,6 +14,7 @@ import org.gradle.api.Project
 import org.gradle.api.plugins.JavaPluginExtension
 import org.gradle.api.tasks.compile.JavaCompile
 import org.gradle.api.tasks.testing.Test
+import org.gradle.api.tasks.bundling.Jar
 import org.gradle.kotlin.dsl.*
 import org.jetbrains.kotlin.gradle.dsl.*
 import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
@@ -182,6 +183,18 @@ fun Project.configureFlattenSourceSets() {
     }
 }
 
+fun Project.configureJarManifest() {
+    this.tasks.withType<Jar> {
+        manifest {
+            attributes(
+                "Implementation-Vendor" to "Mamoe Technologies",
+                "Implementation-Title" to this@configureJarManifest.name.toString(),
+                "Implementation-Version" to this@configureJarManifest.version.toString()
+            )
+        }
+    }
+}
+
 inline fun <reified T> Any?.safeAs(): T? {
     return this as? T
 }