Include mirai-console in mirai project build

This commit is contained in:
Him188 2021-01-28 09:32:23 +08:00
parent 8eee511dd5
commit e0476d7e14
8 changed files with 177 additions and 11 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "mirai-console"]
path = mirai-console
url = git@github.com:mamoe/mirai-console.git

View File

@ -7,6 +7,13 @@ mirai 欢迎一切形式的代码贡献。你可以通过以下几种途径向 m
## 主仓库 `mirai-core`
### 构建
mirai git 仓库含有 submodule, 请在 clone 时使用 `--recursive` 参数, 或在 clone 后使用如下命令更新 submodule:
```shell script
git submodule init
git submodule update
```
- 要构建项目, 请运行 `gradlew assemble`
- 要运行测试, 请运行 `gradlew test`
- 要构建项目并运行测试, 请运行 `gradlew build`
@ -16,7 +23,6 @@ mirai 欢迎一切形式的代码贡献。你可以通过以下几种途径向 m
- `1.x`: 1.x 版本的开发 (已停止)
- `dev`: 2.0 版本的开发
- `master`: 最新稳定版
- `-release` 后缀: 基于[版本规范](docs/Evolution.md#版本规范), 用于从 `dev` 中筛选 bugfix 并发布一个版本的 patch 的版本. 如 `2.0-release` 会包含 `2.0.x` 版本的更新.
**请基于 `dev` 分支进行修改**

View File

@ -41,17 +41,19 @@ plugins {
id("org.jetbrains.dokka") version Versions.dokka
id("net.mamoe.kotlin-jvm-blocking-bridge") version Versions.blockingBridge
id("com.jfrog.bintray") // version Versions.bintray
id("com.gradle.plugin-publish") version "0.12.0" apply false
}
// https://github.com/kotlin/binary-compatibility-validator
apply(plugin = "binary-compatibility-validator")
configure<kotlinx.validation.ApiValidationExtension> {
ignoredProjects.add("mirai-core")
ignoredProjects.add("mirai-core-api")
ignoredProjects.add("mirai-core-utils")
ignoredProjects.add("mirai-core-all")
ignoredProjects.add("mirai")
allprojects.forEach { subproject ->
ignoredProjects.add(subproject.name)
}
ignoredProjects.remove("binary-compatibility-validator")
// Enable validator for module `binary-compatibility-validator` only.
ignoredPackages.add("net.mamoe.mirai.internal")
nonPublicMarkers.add("net.mamoe.mirai.MiraiInternalApi")
@ -101,8 +103,10 @@ allprojects {
configureKotlinCompilerSettings()
configureKotlinExperimentalUsages()
blockingBridge {
unitCoercion = net.mamoe.kjbb.compiler.UnitCoercion.COMPATIBILITY
runCatching {
blockingBridge {
unitCoercion = net.mamoe.kjbb.compiler.UnitCoercion.COMPATIBILITY
}
}
// useIr()
@ -278,7 +282,10 @@ val experimentalAnnotations = arrayOf(
"net.mamoe.mirai.LowLevelApi",
"net.mamoe.mirai.utils.UnstableExternalImage",
"net.mamoe.mirai.message.data.ExperimentalMessageKey"
"net.mamoe.mirai.message.data.ExperimentalMessageKey",
"net.mamoe.mirai.console.ConsoleFrontEndImplementation",
"net.mamoe.mirai.console.util.ConsoleInternalApi",
"net.mamoe.mirai.console.util.ConsoleExperimentalApi"
)
fun Project.configureKotlinExperimentalUsages() {

View File

@ -0,0 +1,58 @@
/*
* Copyright 2020 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
*/
@file:Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
import org.gradle.api.artifacts.ExternalModuleDependency
import org.gradle.api.artifacts.dsl.DependencyHandler
import org.gradle.kotlin.dsl.accessors.runtime.addDependencyTo
@Suppress("unused")
fun DependencyHandler.compileAndTestRuntime(any: Any) {
add("compileOnly", any)
add("testImplementation", any)
}
fun DependencyHandler.smartApi(
dependencyNotation: String
): ExternalModuleDependency {
return smart("api", dependencyNotation)
}
fun DependencyHandler.smartImplementation(
dependencyNotation: String
): ExternalModuleDependency {
return smart("implementation", dependencyNotation)
}
private fun DependencyHandler.smart(
configuration: String,
dependencyNotation: String
): ExternalModuleDependency {
return addDependencyTo(
this, configuration, dependencyNotation
) {
fun exclude(group: String, module: String) {
exclude(
mapOf(
"group" to group,
"module" to module
)
)
}
exclude("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
exclude("org.jetbrains.kotlin", "kotlin-stdlib")
exclude("org.jetbrains.kotlin", "kotlin-stdlib-common")
exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
exclude("org.jetbrains.kotlinx", "kotlinx-serialization-common")
exclude("org.jetbrains.kotlinx", "kotlinx-serialization-core")
}
}

View File

@ -0,0 +1,23 @@
/*
* 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
*/
@file:Suppress("ObjectPropertyName", "HasPlatformType")
import org.gradle.api.Project
/*
* For compatibility with composite mirai-core and mirai-console builds and dedicated mirai-console builds.
*
* If you're in mirai project, see also root/buildSrc/MiraiCoreDependency.kt (likely path)
*/
val Project.`mirai-core-api` get() = rootProject.project(":mirai-core-api")
val Project.`mirai-core` get() = rootProject.project(":mirai-core")
val Project.`mirai-core-utils` get() = rootProject.project(":mirai-core-utils")

View File

@ -13,6 +13,9 @@ import org.gradle.api.attributes.Attribute
object Versions {
const val project = "2.2.0-dev-4"
const val core = project
const val console = project
const val consoleTerminal = project
const val kotlinCompiler = "1.4.21"
const val kotlinStdlib = "1.4.21"
@ -37,6 +40,12 @@ object Versions {
const val slf4j = "1.7.30"
const val log4j = "2.13.3"
const val yamlkt = "0.7.5"
const val intellijGradlePlugin = "0.4.16"
const val kotlinIntellijPlugin = "203-1.4.21-release-IJ5981.133" // keep to newest as kotlinCompiler
const val intellij = "2020.3" // don't update easily unless you want your disk space -= 500MB
}
@Suppress("unused")
@ -69,4 +78,25 @@ val `ktor-client-serialization-jvm` = ktor("client-serialization-jvm", Versions.
const val slf4j = "org.slf4j:slf4j-api:" + Versions.slf4j
const val `log4j-api` = "org.apache.logging.log4j:log4j-api:" + Versions.log4j
val ATTRIBUTE_MIRAI_TARGET_PLATFORM: Attribute<String> = Attribute.of("mirai.target.platform", String::class.java)
val ATTRIBUTE_MIRAI_TARGET_PLATFORM: Attribute<String> = Attribute.of("mirai.target.platform", String::class.java)
const val `kotlin-compiler` = "org.jetbrains.kotlin:kotlin-compiler:${Versions.kotlinCompiler}"
const val `kotlin-stdlib` = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlinStdlib}"
const val `kotlin-stdlib-jdk8` = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlinStdlib}"
const val `kotlin-reflect` = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlinStdlib}"
const val `kotlin-test` = "org.jetbrains.kotlin:kotlin-test:${Versions.kotlinStdlib}"
const val `kotlin-test-junit5` = "org.jetbrains.kotlin:kotlin-test-junit5:${Versions.kotlinStdlib}"
const val `mirai-core-api` = "net.mamoe:mirai-core-api:${Versions.core}"
const val `mirai-core` = "net.mamoe:mirai-core:${Versions.core}"
const val `mirai-core-utils` = "net.mamoe:mirai-core-utils:${Versions.core}"
const val yamlkt = "net.mamoe.yamlkt:yamlkt:${Versions.yamlkt}"
const val `jetbrains-annotations` = "org.jetbrains:annotations:19.0.0"
const val `caller-finder` = "io.github.karlatemp:caller:1.0.1"

1
mirai-console Submodule

@ -0,0 +1 @@
Subproject commit 4432ae30df28b8d1cb66c8a5c0bd3b8ce23aa388

View File

@ -28,4 +28,42 @@ include(":mirai-core-api")
include(":mirai-core")
include(":mirai-core-all")
include(":binary-compatibility-validator")
//include(":mirai-console")
include(":binary-compatibility-validator")
val disableOldFrontEnds = true
fun includeConsoleProject(projectPath: String, path: String? = null) {
include(projectPath)
if (path != null) project(projectPath).projectDir = file("mirai-console/$path")
}
includeConsoleProject(":mirai-console", "backend/mirai-console")
includeConsoleProject(":mirai-console.codegen", "backend/codegen")
includeConsoleProject(":mirai-console-terminal", "frontend/mirai-console-terminal")
includeConsoleProject(":mirai-console-compiler-common", "tools/compiler-common")
includeConsoleProject(":mirai-console-intellij", "tools/intellij-plugin")
includeConsoleProject(":mirai-console-gradle", "tools/gradle-plugin")
@Suppress("ConstantConditionIf")
if (!disableOldFrontEnds) {
includeConsoleProject(":mirai-console-terminal", "frontend/mirai-console-terminal")
val jdkVersion = kotlin.runCatching {
System.getProperty("java.version").let { v ->
v.toIntOrNull() ?: v.removePrefix("1.").substringBefore("-").toIntOrNull()
}
}.getOrNull() ?: -1
println("JDK version: $jdkVersion")
if (jdkVersion >= 9) {
includeConsoleProject(":mirai-console-graphical", "frontend/mirai-console-graphical")
} else {
println("当前使用的 JDK 版本为 ${System.getProperty("java.version")}, 请使用 JDK 9 以上版本引入模块 `:mirai-console-graphical`\n")
}
}
enableFeaturePreview("GRADLE_METADATA")