diff --git a/README.md b/README.md index fe7570100..9bc33196e 100644 --- a/README.md +++ b/README.md @@ -15,65 +15,32 @@ Mirai 是一个在全平台下运行,提供 QQ 协议支持的高效率机器 # mirai-console -高效率插件支持 QQ 机器人框架, 机器人核心来自 [mirai](https://github.com/mamoe/mirai) +高效率 QQ 机器人框架,机器人核心来自 [mirai](https://github.com/mamoe/mirai) -## 模块说明 +![Gradle CI](https://github.com/mamoe/mirai-console/workflows/Gradle%20CI/badge.svg?branch=master) +[![Gitter](https://badges.gitter.im/mamoe/mirai.svg)](https://gitter.im/mamoe/mirai?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) -console 由后端和前端一起工作. 使用时必须选择一个前端. +## 开发 -- `mirai-console`: console 的后端, 包含插件管理, 指令系统, 配置系统. +- **[准备工作 - 环境和前置知识](docs/Preparations.md)** +- **[配置项目](docs/ConfiguringProjects.md)** +- **[启动 Console](docs/Run.md)** + +### 后端插件开发基础 + +- 插件 - [Plugin 模块](docs/Plugins.md) +- 指令 - [Command 模块](docs/Commands.md) +- 存储 - [PluginData 模块](docs/PluginData.md) +- 权限 - [Permission 模块](docs/Permissions.md) - -前端: - -- `mirai-console-terminal`: console 的 Unix 终端界面前端. -- `mirai-console-graphical`: console 的 JavaFX 图形化界面前端. (开发中) - -**注意:`mirai-console` 1.0-RC 发布之前, 前端请使用 `mirai-console-pure` 而不是 `mirai-console-terminal`** - -**注意:`mirai-console` 后端和 terminal 前端正在进行完全的重构, 所有 API 都不具有稳定性** - -### 版本 - -[Version]: https://api.bintray.com/packages/him188moe/mirai/mirai-console/images/download.svg? -[Bintray Download]: https://bintray.com/him188moe/mirai/mirai-console/ - -详见 [版本规范](docs/README.md#版本规范) - -| 版本类型 | 版本号 | -|:------:|:------------:| -| 稳定 | - | -| 预览 | 1.0-M4 | -| 开发 | [![Version]][Bintray Download] | - -### 使用 - -**查看示例插件** +**示例插件**: - [mirai-console-example-plugin (Kotlin DSL)](https://github.com/Him188/mirai-console-example-plugin) - [mirai-console-example-plugin (Groovy DSL)](https://github.com/Karlatemp/mirai-console-example-plugin) -正在更新中的文档:[参考文档](docs/README.md) +### 后端插件开发进阶 -#### Gradle -`CORE_VERSION`: [ ![Download](https://api.bintray.com/packages/him188moe/mirai/mirai-core/images/download.svg?) ](https://bintray.com/him188moe/mirai/mirai-core/) +- 扩展 - [Extension 模块和扩展点](docs/Extensions.md) - -build.gradle.kts -```kotlin -repositories { - jcenter() -} - -dependencies { - implementation("net.mamoe:mirai-core:$CORE_VERSION") // mirai-core 的 API - implementation("net.mamoe:mirai-console:$CONSOLE_VERSION") // 后端 - - testImplementation("net.mamoe:mirai-console-terminal:$CONSOLE_VERSION") // 前端, 用于启动测试 -} -``` - -**注意:`mirai-console` 1.0-RC 发布之前, 前端请使用 `mirai-console-pure` 而不是 `mirai-console-terminal`** - -#### Maven -同理 Gradle +### 实现前端 +- [FrontEnd](docs/FrontEnd.md) \ No newline at end of file diff --git a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleBuildConstants.kt b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleBuildConstants.kt index 8ee34200d..19dd40076 100644 --- a/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleBuildConstants.kt +++ b/backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/internal/MiraiConsoleBuildConstants.kt @@ -14,8 +14,8 @@ import java.time.Instant internal object MiraiConsoleBuildConstants { // auto-filled on build (task :mirai-console:fillBuildConstants) @JvmStatic - val buildDate: Instant = Instant.ofEpochSecond(1599934775) + val buildDate: Instant = Instant.ofEpochSecond(1600522812) @JvmStatic - val version: Semver = Semver("1.0-M4", Semver.SemverType.LOOSE) + val version: Semver = Semver("1.0-RC-dev-28", Semver.SemverType.LOOSE) } diff --git a/buildSrc/src/main/kotlin/PublishingHelpers.kt b/buildSrc/src/main/kotlin/PublishingHelpers.kt index a6af10e47..69b954dac 100644 --- a/buildSrc/src/main/kotlin/PublishingHelpers.kt +++ b/buildSrc/src/main/kotlin/PublishingHelpers.kt @@ -54,7 +54,7 @@ internal fun org.gradle.api.Project.`publishing`(configure: org.gradle.api.publi inline fun Project.setupPublishing( artifactId: String, bintrayRepo: String = "mirai", - bintrayPkgName: String = "mirai-console", + bintrayPkgName: String = artifactId, vcs: String = "https://github.com/mamoe/mirai-console" ) { diff --git a/docs/Appendix.md b/docs/Appendix.md new file mode 100644 index 000000000..b8fd0b047 --- /dev/null +++ b/docs/Appendix.md @@ -0,0 +1,49 @@ +# Mirai Console - Appendix + +### Mirai Console 演进 + +Mirai Console 是不断前进的框架,将来必定会发生 API 弃用和重构。 +维护者会严谨地推进每一项修改,并提供迁移周期(至少 2 个次版本)。 + +#### 版本规范 + +Mirai Console 的版本号遵循 [语义化版本 2.0.0](https://semver.org/lang/zh-CN/#spec-item-9) 规范。 + +在日常开发中, Mirai Console 会以 `-dev-1`,`-dev-2` 等版本后缀发布开发预览版本。这些版本仅用于兼容性测试等目的,无稳定性保证。 + +在大版本开发过程中,Mirai Console 会以 `-M1`, `-M2` 等版本后缀发布里程碑预览版本。代表一系列功能的完成,但还不稳定。 +这些版本里新增的 API 仍可能还会在下一个 Milestone 版本变化,因此请按需使用。 + +在大版本即将发布前,Mirai Console 会以 `-RC` 版本后缀发布最终的预览版本。 +`RC` 表示新版本 API 已经确定,离稳定版发布只差最后的一些内部优化或 bug 修复。 + +#### 版本选择 + +**稳定性**:稳定 (`x.y.z`) > 发布预览 (`-RC`) > 里程碑预览 (`-M`) > 开发 (`-dev`)。 + +| 目的 | 推荐至少更新到版本 | +|:--------------------------:|:--------------:| +| 生产环境 | `x.y.z` | +| 希望尽早体验稳定新特性的插件作者 | `-RC` | +| 无论如何都想体验新特性的插件作者 | `-M` | +| 前端实现者, 底层插件作者 | `-M` | +| 为 Mirai Console 提交 PR | `-dev` | + +其中,‘底层插件’ 表示提供扩展等的插件。如权限系统,其他语言插件加载器等。 + +#### 更新兼容性 + +对于 `x.y.z` 版本号: +- 当 `z` 增加时,只会有 bug 修复,和必要的新函数添加(为了解决某一个问题),不会有破坏性变化。 +- 当 `y` 增加时,可能有新 API 的引入,和旧 API 的弃用。但这些弃用会经过一个弃用周期后才被删除(隐藏)。向下兼容得到保证。 +- 当 `x` 增加时,任何 API 都可能会有变化。无兼容性保证。 + +#### 弃用周期 + +一个计划被删除的 API,将会在下一个次版本开始经历弃用周期。 + +如一个 API 在 `1.1.0` 起被弃用,它首先会是 `WARNING` (使用时会得到一个编译警告)弃用级别。 +在 `1.2.0` 上升为 `ERROR`(使用时会得到一个编译错误); +在 `1.3.0` 上升为 `HIDDEN`(使用者无法看到这些 API)。 + +`HIDDEN` 的 API 仍然会保留在代码中并正常编译,以提供二进制兼容性,直到下一个主版本更新。 diff --git a/docs/ConfiguringProjects.md b/docs/ConfiguringProjects.md new file mode 100644 index 000000000..6cd90981c --- /dev/null +++ b/docs/ConfiguringProjects.md @@ -0,0 +1,80 @@ +# Mirai Console - Configuring Projects + +配置 Mirai Console 项目。 + +## 模块说明 + +console 由后端和前端一起工作. 使用时必须选择一个前端. + +- `mirai-console`: Mirai Console 后端。 + +- `mirai-console-terminal`: 终端前端,适用于 JVM。 +- [`MiraiAndroid`](https://github.com/mzdluo123/MiraiAndroid): Android 应用前端。 + +**注意:`mirai-console` 1.0-RC 发布之前, 前端请使用 `mirai-console-pure` 而不是 `mirai-console-terminal`** + +## 选择版本 + +有关各类版本的区别,参考 [版本规范](Appendix.md#版本规范) + +[Version]: https://api.bintray.com/packages/him188moe/mirai/mirai-console/images/download.svg? +[Bintray Download]: https://bintray.com/him188moe/mirai/mirai-console/ + +| 版本类型 | 版本号 | +|:------:|:------------:| +| 稳定 | - | +| 预览 | 1.0-M4 | +| 开发 | [![Version]][Bintray Download] | + +## 配置项目 + +### 使用模板项目 + +Mirai 鼓励插件开发者将自己的作品开源,并为此提供了模板项目。 + +注意,模板项目依赖的 Mirai Console 不一定是最新的。请检查 + +1. 访问 [mirai-console-plugin-template](https://github.com/project-mirai/mirai-console-plugin-template) +2. 点击绿色按钮 "Use this template",创建项目 +3. 克隆项目,检查并修改生成的属性 + +### 使用 Gradle 插件配置项目 + +`VERSION` 可在 + +若使用 `build.gradle.kts`: +```kotlin +plugins { + id("net.mamoe.mirai-console") version "VERSION" +} +``` + +若使用 `build.gradle`: +```groovy +plugins { + id 'net.mamoe.mirai-console' version 'VERSION' +} +``` + +完成。Mirai Console Gradle 插件会为你配置依赖等所有编译环境。 + +### 手动配置项目 + +添加依赖: +`build.gradle.kts`: +```kotlin +repositories { + jcenter() +} + +dependencies { + compileOnly("net.mamoe:mirai-core:$CORE_VERSION") // mirai-core 的 API + compileOnly("net.mamoe:mirai-console:$CONSOLE_VERSION") // 后端 + + testImplementation("net.mamoe:mirai-console-terminal:$CONSOLE_VERSION") // 前端, 用于启动测试 + testImplementation("net.mamoe:mirai-console-terminal:$CONSOLE_VERSION") // 前端, 用于启动测试 +} +``` + +之后还需要配置 Kotlin `jvm-default` 编译参数,Kotlin 和 Java 的编译目标等。 +在打包插件时必须将依赖一并打包进插件 JAR,且排除 `mirai-core`,`mirai-console` 和它们的间接依赖,否则插件不会被加载。 \ No newline at end of file diff --git a/docs/Contributing.md b/docs/Contributing.md new file mode 100644 index 000000000..d90a8dd4c --- /dev/null +++ b/docs/Contributing.md @@ -0,0 +1,2 @@ +# Mirai Console - Contributing + diff --git a/docs/Preparations.md b/docs/Preparations.md new file mode 100644 index 000000000..3b3597637 --- /dev/null +++ b/docs/Preparations.md @@ -0,0 +1,103 @@ +# Mirai Console - Preparations + +***如果跳过本节内容,你很可能遇到无法解决的问题。*** + +### 环境要求 + +*不接受降低最低版本要求的建议* + +- JDK 11 +- Android:Android SDK 26+ (Android 8.0) +- Kotlin: 1.4 + +*Mirai Console 需要的 Kotlin 版本会与 Kotlin 最新稳定版本同步。* + +### 开发插件的准备工作 + +- 安装并配置 JDK 11 + +若使用 Java,或要修改 Mirai Console: + +- 使用 [IntelliJ IDEA](https://www.jetbrains.com/idea/) (或 `Android Studio`)。 +- IDE 需装有 [Kotlin Jvm Blocking Bridge](https://github.com/mamoe/kotlin-jvm-blocking-bridge) 插件 (先启动你的 IDE,再点击 [一键安装](https://plugins.jetbrains.com/embeddable/install/14816)) + +若使用 Kotlin,无特别要求。 + +## 前置知识 + +要学习为 mirai-console 开发原生支持的插件, 需要: + +- 掌握 Java 基础 +- 至少粗略了解 Kotlin 基础语法(30 分钟): + - [基本类型](https://www.kotlincn.net/docs/reference/basic-types.html) + - [类与继承](https://www.kotlincn.net/docs/reference/classes.html) + - [属性与字段](https://www.kotlincn.net/docs/reference/properties.html) + - [接口](https://www.kotlincn.net/docs/reference/interfaces.html) + - [扩展](https://www.kotlincn.net/docs/reference/extensions.html) + - [数据类](https://www.kotlincn.net/docs/reference/data-classes.html) + - [对象](https://www.kotlincn.net/docs/reference/object-declarations.html) + - [密封类](https://www.kotlincn.net/docs/reference/sealed-classes.html) + - **[Java 中调用 Kotlin](https://www.kotlincn.net/docs/reference/java-to-kotlin-interop.html)** +- 对于 Java 使用者,请阅读: + - [Java 用户的使用指南](#kotlin-源码阅读帮助) + - [在 Java 使用 Mirai Console 中的 Kotlin `suspend` 函数](#在-java-使用-mirai-console-中的-kotlin-suspend-函数) +- 对于 Kotlin 使用者,请熟知 [Kotlin `1.4` 版本带来的新特性](#mirai-console-使用的-kotlin-14-版本的新特性) + + +### Kotlin 源码阅读帮助 + +- Java 中的「方法」在 Kotlin 中均被称为「函数」。 +- Kotlin 默认的访问权限是 `public`。如 Kotlin `class Test` 相当于 Java 的 `public class Test {}` +- Kotlin 的函数定义 `fun test(int: Int): String` 相当于 Java 的方法定义 `public String test(int int)` + +### 在 Java 使用 Mirai Console 中的 Kotlin `suspend` 函数 + +#### 什么是 `suspend` 函数 + +`suspend` 函数中文是「挂起函数」,是 Kotlin 「[协程](https://www.kotlincn.net/docs/reference/coroutines/coroutines-guide.html)」的一部分。 + +Kotlin 协程是语言级特性,函数的修饰符 `suspend` 会在编译阶段被处理。 + +对于一个挂起函数: +```kotlin +suspend fun test(): String +``` + +它会被编译为 `public Object test(Continuation $completion)`。 + +这是因为 Kotlin 对所有挂起函数都有这样的内部变化,并在编译时实现了协程的一些特性。 + +Java 用户无法调用这样的方法,因为 `Continuation` 的实现很复杂。 + +Mamoe 为此开发了 Kotlin 编译器插件 [Kotlin Jvm Blocking Bridge](https://github.com/mamoe/kotlin-jvm-blocking-bridge),通过 `@JvmBlockingBridge` 注解,在编译期额外生成一个供 Java 使用的方法,让 Java 用户可以使用拥有源码内相同的函数签名的方法。 + +要获取详细信息,参考 [Kotlin Jvm Blocking Bridge 编译器插件](https://github.com/mamoe/kotlin-jvm-blocking-bridge/blob/master/README-chs.md#%E7%BC%96%E8%AF%91%E5%99%A8%E6%8F%92%E4%BB%B6) + +### Mirai Console 使用的 Kotlin `1.4` 版本的新特性 + +在官方文档的 [语言特性与改进](https://www.kotlincn.net/docs/reference/whatsnew14.html#%E8%AF%AD%E8%A8%80%E7%89%B9%E6%80%A7%E4%B8%8E%E6%94%B9%E8%BF%9B) 基础上,Mirai Console 的一些设计基于 Kotlin 1.4 的更多新特性。 + +#### `object` 内的扩展函数的自动引用 +对于如下定义: +```kotlin +package org.example +object Obj { + fun String.foo() +} +``` +在 Kotlin `1.3`,要调用 `foo`,必须使用: +```kotlin +Obj.run { + "str".foo() +} +``` +因为 IDE 不会自动为 `String.foo` 添加 `import`。 + +Kotlin `1.4` 解决了这个问题。在使用 `"str".foo` 时 Kotlin 会自动添加 `org.example.Obj.foo` 的引用。 + +Mirai Console 很多单例对象都设计为 `interface + companion object INSTANCE` 的接口与实现模式,需要这样的新特性。例如: +```kotlin +interface MiraiConsole { + companion object INSTANCE : MiraiConsole by MiraiConsoleImpl // MiraiConsoleImpl 是内部实现,不公开 +} +``` diff --git a/docs/README.md b/docs/README.md index 6db0f09d9..95de05428 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,183 +1,3 @@ # Mirai Console 欢迎来到 mirai-console 开发文档! - -## 目录 - -- **[准备工作](#准备工作)** -- **[启动 Console](Run.md)** - -### 后端插件开发基础 - -- 插件 - [Plugin 模块](Plugins.md) -- 指令 - [Command 模块](Commands.md) -- 存储 - [PluginData 模块](PluginData.md) -- 权限 - [Permission 模块](Permissions.md) - -### 后端插件开发进阶 - -- 扩展 - [Extension 模块和扩展点](Extensions.md) - -### 实现前端 -- [FrontEnd](FrontEnd.md) - -[`Plugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/Plugin.kt -[`Annotations`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/Annotations.kt -[`PluginData`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginData.kt -[`JavaPluginScheduler`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JavaPluginScheduler.kt -[`JvmPlugin`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/jvm/JvmPlugin.kt -[`PluginConfig`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginConfig.kt -[`PluginLoader`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/plugin/loader/PluginLoader.kt -[`ConsoleInput`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/util/ConsoleInput.kt -[`PluginDataStorage`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/data/PluginDataStorage.kt -[`Command`]: ../backend/mirai-console/src/main/kotlin/net/mamoe/mirai/console/command/Command.kt - -## 准备工作 -***如果跳过本节内容,你很可能遇到无法解决的问题。*** - -### 环境要求 - -*不接受降低最低版本要求的建议* - -- JDK 11 -- Android:Android SDK 26+ (Android 8.0) -- Kotlin: 1.4 - -*Mirai Console 需要的 Kotlin 版本会与 Kotlin 最新稳定版本同步。* - -### 开发插件的准备工作 - -- 安装并配置 JDK 11 - -若使用 Java,或要修改 Mirai Console: - -- 使用 [IntelliJ IDEA](https://www.jetbrains.com/idea/) (或 `Android Studio`)。 -- IDE 需装有 [Kotlin Jvm Blocking Bridge](https://github.com/mamoe/kotlin-jvm-blocking-bridge) 插件 (先启动你的 IDE,再点击 [一键安装](https://plugins.jetbrains.com/embeddable/install/14816)) - -若使用 Kotlin,无特别要求。 - -### 前置知识 -要学习为 mirai-console 开发原生支持的插件, 需要: - -- 掌握 Java 基础 -- 至少粗略了解 Kotlin 基础语法(30 分钟): - - [基本类型](https://www.kotlincn.net/docs/reference/basic-types.html) - - [类与继承](https://www.kotlincn.net/docs/reference/classes.html) - - [属性与字段](https://www.kotlincn.net/docs/reference/properties.html) - - [接口](https://www.kotlincn.net/docs/reference/interfaces.html) - - [扩展](https://www.kotlincn.net/docs/reference/extensions.html) - - [数据类](https://www.kotlincn.net/docs/reference/data-classes.html) - - [对象](https://www.kotlincn.net/docs/reference/object-declarations.html) - - [密封类](https://www.kotlincn.net/docs/reference/sealed-classes.html) - - **[Java 中调用 Kotlin](https://www.kotlincn.net/docs/reference/java-to-kotlin-interop.html)** -- 对于 Java 使用者,请阅读 [Java 用户的使用指南](#java-用户的使用指南),[在 Java 使用 Mirai Console 中的 Kotlin `suspend` 函数](#在-java-使用-mirai-console-中的-kotlin-suspend-函数) -- 对于 Kotlin 使用者,请熟知 [Kotlin `1.4` 版本带来的新特性](#mirai-console-使用的-kotlin-14-版本的新特性) - - -## 附录 - -### Java 用户的使用指南 - -- Java 中的「方法」在 Kotlin 中均被称为「函数」。 -- Kotlin 默认的访问权限是 `public`。如 Kotlin `class Test` 相当于 Java 的 `public class Test {}` -- Kotlin 的函数定义 `fun test(int: Int): String` 相当于 Java 的方法定义 `public String test(int int)` - -### 在 Java 使用 Mirai Console 中的 Kotlin `suspend` 函数 - -#### 什么是 `suspend` 函数 - -`suspend` 函数中文是「挂起函数」,是 Kotlin 「[协程](https://www.kotlincn.net/docs/reference/coroutines/coroutines-guide.html)」的一部分。 - -Kotlin 协程是语言级特性,函数的修饰符 `suspend` 会在编译阶段被处理。 - -对于一个挂起函数: -```kotlin -suspend fun test(): String -``` - -它会被编译为 `public Object test(Continuation $completion)`。 - -这是因为 Kotlin 对所有挂起函数都有这样的内部变化,并在编译时实现了协程的一些特性。 - -Java 用户无法调用这样的方法,因为 `Continuation` 的实现很复杂。 - -Mamoe 为此开发了 Kotlin 编译器插件 [Kotlin Jvm Blocking Bridge](https://github.com/mamoe/kotlin-jvm-blocking-bridge),通过 `@JvmBlockingBridge` 注解,在编译期额外生成一个供 Java 使用的方法,让 Java 用户可以使用拥有源码内相同的函数签名的方法。 - -要获取详细信息,参考 [Kotlin Jvm Blocking Bridge 编译器插件](https://github.com/mamoe/kotlin-jvm-blocking-bridge/blob/master/README-chs.md#%E7%BC%96%E8%AF%91%E5%99%A8%E6%8F%92%E4%BB%B6) - -### Mirai Console 使用的 Kotlin `1.4` 版本的新特性 - -在官方文档的 [语言特性与改进](https://www.kotlincn.net/docs/reference/whatsnew14.html#%E8%AF%AD%E8%A8%80%E7%89%B9%E6%80%A7%E4%B8%8E%E6%94%B9%E8%BF%9B) 基础上,Mirai Console 的一些设计基于 Kotlin 1.4 的更多新特性。 - -#### `object` 内的扩展函数的自动引用 -对于如下定义: -```kotlin -package org.example -object Obj { - fun String.foo() -} -``` -在 Kotlin `1.3`,要调用 `foo`,必须使用: -```kotlin -Obj.run { - "str".foo() -} -``` -因为 IDE 不会自动为 `String.foo` 添加 `import`。 - -Kotlin `1.4` 解决了这个问题。在使用 `"str".foo` 时 Kotlin 会自动添加 `org.example.Obj.foo` 的引用。 - -Mirai Console 很多单例对象都设计为 `interface + companion object INSTANCE` 的接口与实现模式,需要这样的新特性。例如: -```kotlin -interface MiraiConsole { - companion object INSTANCE : MiraiConsole by MiraiConsoleImpl // MiraiConsoleImpl 是内部实现,不公开 -} -``` - -#### Mirai Console 演进 - -Mirai Console 是不断前进的框架,将来必定会发生 API 弃用和重构。 -维护者会严谨地推进每一项修改,并提供迁移周期(至少 2 个次版本)。 - -##### 版本规范 - -Mirai Console 的版本号遵循 [语义化版本 2.0.0](https://semver.org/lang/zh-CN/#spec-item-9) 规范。 - -在日常开发中, Mirai Console 会以 `-dev-1`,`-dev-2` 等版本后缀发布开发预览版本。这些版本仅用于兼容性测试等目的,无稳定性保证。 - -在大版本开发过程中,Mirai Console 会以 `-M1`, `-M2` 等版本后缀发布里程碑预览版本。代表一系列功能的完成,但还不稳定。 -这些版本里新增的 API 仍可能还会在下一个 Milestone 版本变化,因此请按需使用。 - -在大版本即将发布前,Mirai Console 会以 `-RC` 版本后缀发布最终的预览版本。 -`RC` 表示新版本 API 已经确定,离稳定版发布只差最后的一些内部优化或 bug 修复。 - -##### 版本选择 - -**稳定性**:稳定 (`x.y.z`) > 发布预览 (`-RC`) > 里程碑预览 (`-M`) > 开发 (`-dev`)。 - -| 目的 | 推荐至少更新到版本 | -|:--------------------------:|:--------------:| -| 生产环境 | `x.y.z` | -| 希望尽早体验稳定新特性的插件作者 | `-RC` | -| 无论如何都想体验新特性的插件作者 | `-M` | -| 前端实现者, 底层插件作者 | `-M` | -| 为 Mirai Console 提交 PR | `-dev` | - -其中,‘底层插件’ 表示提供扩展等的插件。如权限系统,其他语言插件加载器等。 - -##### 更新兼容性 - -对于 `x.y.z` 版本号: -- 当 `z` 增加时,只会有 bug 修复,和必要的新函数添加(为了解决某一个问题),不会有破坏性变化。 -- 当 `y` 增加时,可能有新 API 的引入,和旧 API 的弃用。但这些弃用会经过一个弃用周期后才被删除(隐藏)。向下兼容得到保证。 -- 当 `x` 增加时,任何 API 都可能会有变化。无兼容性保证。 - -##### 弃用周期 - -一个计划被删除的 API,将会在下一个次版本开始经历弃用周期。 - -如一个 API 在 `1.1.0` 起被弃用,它首先会是 `WARNING` (使用时会得到一个编译警告)弃用级别。 -在 `1.2.0` 上升为 `ERROR`(使用时会得到一个编译错误); -在 `1.3.0` 上升为 `HIDDEN`(使用者无法看到这些 API)。 - -`HIDDEN` 的 API 仍然会保留在代码中并正常编译,以提供二进制兼容性,直到下一个主版本更新。 diff --git a/docs/Run.md b/docs/Run.md index 2cf39c5de..c4651e4bf 100644 --- a/docs/Run.md +++ b/docs/Run.md @@ -2,11 +2,11 @@ Mirai Console 可以独立启动,也可以被嵌入到某个应用中。 -## 使用第三方工具自动启动 +## 使用第三方工具自动独立启动 https://github.com/LXY1226/MiraiOK -## 独立启动 +## 手动配置独立启动 ### 环境 - JRE 11+ / JDK 11+ diff --git a/tools/gradle-plugin/README.md b/tools/gradle-plugin/README.md index 78e0e7f29..dbe0dd749 100644 --- a/tools/gradle-plugin/README.md +++ b/tools/gradle-plugin/README.md @@ -1,2 +1,47 @@ -# mirai-console-gradle +# Mirai Console Gradle Plugin +Mirai Console Gradle 插件。 + +## 使用 + +参考 [ConfiguringProjects](../../docs/ConfiguringProjects.md#gradle)[ + +## 功能 + +- 为 `main` 源集配置 `mirai-core`,`mirai-console` 依赖 +- 为 `test` 源集配置 `mirai-core-qqandroied`, `mirai-console-terminal` 的依赖 (用于启动测试) +- 添加 mirai 依赖仓库链接 +- 配置插件 JAR 打包构建任务 `buildPlugin` (带依赖) + + +### `buildPlugin` + +用于打包插件和依赖为可以放入 Mirai Console `plugins` 目录加载的插件 JAR。 + +#### 执行 `buildPlugin` +```shell script +$ gradlew buildPlugin +``` + +打包结果存放在 `build/mirai/` 目录下。 + +## 配置 + +若要修改 Mirai Console Gradle 插件的默认配置,在 `build.gradle.kts` 或 `build.gradle` 内,使用 `mirai`: +```kotlin +mirai { // this: MiraiConsoleExtension + // 配置 +} +``` + +DSL 详见 [MiraiConsoleExtension](src/main/kotlin/net/mamoe/mirai/console/gradle/MiraiConsoleExtension.kt)。 + +#### 排除依赖 + +如果要在打包 JAR(`buildPlugin`)时排除一些依赖,请使用如下配置: + +```kotlin +mirai { + excludeDependency("com.google.code.gson", "gson") +} +``` \ No newline at end of file