mirai/backend/mirai-console/build.gradle.kts

134 lines
4.0 KiB
Plaintext
Raw Normal View History

2020-06-21 14:24:17 +08:00
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.text.SimpleDateFormat
2020-03-30 17:37:07 +08:00
import java.util.*
plugins {
2020-06-20 22:55:07 +08:00
kotlin("jvm") version Versions.kotlin
kotlin("plugin.serialization") version Versions.kotlin
id("java")
`maven-publish`
2020-06-28 11:45:21 +08:00
id("com.jfrog.bintray")
}
2020-06-20 22:55:07 +08:00
version = Versions.console
description = "Console backend for mirai"
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType(JavaCompile::class.java) {
options.encoding = "UTF8"
}
2020-03-05 09:45:54 +08:00
kotlin {
2020-07-11 19:26:31 +08:00
explicitApiWarning()
sourceSets.all {
target.compilations.all {
kotlinOptions {
freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=enable"
jvmTarget = "1.8"
}
}
languageSettings.apply {
enableLanguageFeature("InlineClasses")
progressiveMode = true
useExperimentalAnnotation("kotlin.Experimental")
useExperimentalAnnotation("kotlin.OptIn")
useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiInternalAPI")
useExperimentalAnnotation("net.mamoe.mirai.utils.MiraiExperimentalAPI")
useExperimentalAnnotation("net.mamoe.mirai.console.utils.ConsoleExperimentalAPI")
useExperimentalAnnotation("kotlin.ExperimentalUnsignedTypes")
useExperimentalAnnotation("kotlin.experimental.ExperimentalTypeInference")
useExperimentalAnnotation("kotlin.contracts.ExperimentalContracts")
}
}
2020-07-11 19:26:31 +08:00
sourceSets.invoke {
getByName("test") {
languageSettings.apply {
languageVersion = "1.4"
}
2020-03-05 09:45:54 +08:00
}
2020-07-11 19:26:31 +08:00
getByName("main") {
languageSettings.apply {
languageVersion = "1.3"
}
}
2020-03-05 09:45:54 +08:00
}
}
2020-05-14 16:05:42 +08:00
dependencies {
2020-06-20 22:55:07 +08:00
compileAndRuntime("net.mamoe:mirai-core:${Versions.core}")
2020-05-14 16:05:42 +08:00
compileAndRuntime(kotlin("stdlib"))
2020-03-04 22:15:46 +08:00
2020-05-22 19:33:46 +08:00
api("net.mamoe.yamlkt:yamlkt:0.3.1")
2020-05-11 13:22:09 +08:00
api("org.jetbrains:annotations:19.0.0")
2020-06-20 22:55:07 +08:00
api(kotlinx("coroutines-jdk8", Versions.coroutines))
2020-05-11 13:22:09 +08:00
2020-06-20 22:55:07 +08:00
testApi("net.mamoe:mirai-core-qqandroid:${Versions.core}")
testApi(kotlin("stdlib-jdk8"))
testApi(kotlin("test"))
testApi(kotlin("test-junit5"))
2020-06-17 13:25:28 +08:00
testImplementation("org.junit.jupiter:junit-jupiter-api:5.2.0")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.2.0")
}
2020-07-11 19:26:31 +08:00
ext.apply {
// 傻逼 compileAndRuntime 没 exclude 掉
// 傻逼 gradle 第二次配置 task 会覆盖掉第一次的配置
val x: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar.() -> Unit = {
dependencyFilter.exclude {
when ("${it.moduleGroup}:${it.moduleName}") {
"net.mamoe:mirai-core" -> true
"net.mamoe:mirai-core-qqandroid" -> true
else -> false
}
}
}
2020-07-11 19:26:31 +08:00
set("shadowJar", x)
}
2020-06-17 13:25:28 +08:00
tasks {
"test"(Test::class) {
useJUnitPlatform()
}
2020-06-21 14:24:17 +08:00
val compileKotlin by getting {}
val fillBuildConstants by registering {
doLast {
return@doLast //
2020-06-21 14:24:17 +08:00
(compileKotlin as KotlinCompile).source.filter { it.name == "MiraiConsole.kt" }.single().let { file ->
file.writeText(file.readText()
.replace(Regex("""val buildDate: Date = Date\((.*)\) //(.*)""")) {
"""
2020-06-22 12:30:36 +08:00
val buildDate: Date = Date(${System.currentTimeMillis()}L) // ${SimpleDateFormat("yyyy-MM-dd HH:mm:ss").apply {
2020-06-21 14:24:17 +08:00
timeZone = TimeZone.getTimeZone("GMT+8")
}.format(Date())}
""".trimIndent()
}
.replace(Regex("""const val version: String = "(.*)"""")) {
"""
const val version: String = "${Versions.console}"
""".trimIndent()
}
)
}
}
}
"compileKotlin" {
dependsOn(fillBuildConstants)
}
}
// region PUBLISHING
2020-05-10 14:22:33 +08:00
2020-06-28 11:45:21 +08:00
setupPublishing("mirai-console")
// endregion