build.gradle.kts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Copyright 2019-2021 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/master/LICENSE
  8. */
  9. @file:Suppress("UnusedImport")
  10. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
  11. import java.time.Instant
  12. plugins {
  13. kotlin("jvm")
  14. kotlin("plugin.serialization")
  15. id("java")
  16. `maven-publish`
  17. id("me.him188.kotlin-jvm-blocking-bridge")
  18. }
  19. version = Versions.console
  20. description = "Mirai Console Backend"
  21. kotlin {
  22. explicitApiWarning()
  23. }
  24. dependencies {
  25. compileAndTestRuntime(project(":mirai-core-api"))
  26. compileAndTestRuntime(project(":mirai-core-utils"))
  27. compileAndTestRuntime(`kotlin-stdlib-jdk8`)
  28. compileAndTestRuntime(`kotlinx-atomicfu-jvm`)
  29. compileAndTestRuntime(`kotlinx-coroutines-core-jvm`)
  30. compileAndTestRuntime(`kotlinx-serialization-core-jvm`)
  31. compileAndTestRuntime(`kotlinx-serialization-json-jvm`)
  32. compileAndTestRuntime(`kotlin-reflect`)
  33. implementation(project(":mirai-console-compiler-annotations"))
  34. smartImplementation(`yamlkt-jvm`)
  35. smartImplementation(`jetbrains-annotations`)
  36. smartImplementation(`caller-finder`)
  37. smartApi(`kotlinx-coroutines-jdk8`)
  38. testApi(project(":mirai-core"))
  39. testApi(`kotlin-stdlib-jdk8`)
  40. }
  41. tasks {
  42. val compileKotlin by getting {}
  43. register("fillBuildConstants") {
  44. group = "mirai"
  45. doLast {
  46. (compileKotlin as KotlinCompile).source.filter { it.name == "MiraiConsoleBuildConstants.kt" }.single()
  47. .let { file ->
  48. file.writeText(
  49. file.readText()
  50. .replace(
  51. Regex("""val buildDate: Instant = Instant.ofEpochSecond\(.*\)""")
  52. ) {
  53. """val buildDate: Instant = Instant.ofEpochSecond(${
  54. Instant.now().epochSecond
  55. })"""
  56. }
  57. .replace(
  58. Regex("""const val versionConst:\s+String\s+=\s+".*"""")
  59. ) { """const val versionConst: String = "${project.version}"""" }
  60. )
  61. }
  62. }
  63. }
  64. }
  65. configurePublishing("mirai-console")