settings.gradle.kts 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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. pluginManagement {
  10. repositories {
  11. if (System.getProperty("use.maven.local") == "true") {
  12. mavenLocal()
  13. }
  14. gradlePluginPortal()
  15. mavenCentral()
  16. google()
  17. }
  18. }
  19. val allProjects = mutableListOf<ProjectDescriptor>()
  20. rootProject.name = "mirai"
  21. fun includeProject(projectPath: String, dir: String? = null) {
  22. include(projectPath)
  23. if (dir != null) project(projectPath).projectDir = file(dir)
  24. allProjects.add(project(projectPath))
  25. }
  26. includeProject(":mirai-core-utils")
  27. includeProject(":mirai-core-utils-barcode")
  28. includeProject(":mirai-core-api")
  29. includeProject(":mirai-core")
  30. includeProject(":mirai-core-all")
  31. includeProject(":mirai-bom")
  32. includeProject(":mirai-dokka")
  33. //includeProject(":binary-compatibility-validator")
  34. //includeProject(":binary-compatibility-validator-android", "binary-compatibility-validator/android")
  35. includeProject(":mirai-logging-log4j2", "logging/mirai-logging-log4j2")
  36. includeProject(":mirai-logging-slf4j", "logging/mirai-logging-slf4j")
  37. includeProject(":mirai-logging-slf4j-simple", "logging/mirai-logging-slf4j-simple")
  38. includeProject(":mirai-logging-slf4j-logback", "logging/mirai-logging-slf4j-logback")
  39. val disableOldFrontEnds = true
  40. fun includeConsoleProject(projectPath: String, dir: String? = null) =
  41. includeProject(projectPath, "mirai-console/$dir")
  42. includeConsoleProject(":mirai-console-compiler-annotations", "tools/compiler-annotations")
  43. includeConsoleProject(":mirai-console", "backend/mirai-console")
  44. includeConsoleProject(":mirai-console.codegen", "backend/codegen")
  45. includeConsoleProject(":mirai-console-terminal", "frontend/mirai-console-terminal")
  46. // region mirai-console.integration-test
  47. includeConsoleProject(":mirai-console.integration-test", "backend/integration-test")
  48. val consoleIntegrationTestSubPluginBuildGradleKtsTemplate by lazy {
  49. rootProject.projectDir
  50. .resolve("mirai-console/backend/integration-test/testers")
  51. .resolve("tester.template.gradle.kts")
  52. .readText()
  53. }
  54. @Suppress("SimpleRedundantLet")
  55. fun includeConsoleITPlugin(prefix: String, path: File) {
  56. path.resolve("build.gradle.kts").takeIf { !it.isFile }?.let { initScript ->
  57. initScript.writeText(consoleIntegrationTestSubPluginBuildGradleKtsTemplate)
  58. }
  59. val projectPath = "$prefix${path.name}"
  60. include(projectPath)
  61. project(projectPath).projectDir = path
  62. path.listFiles()?.asSequence().orEmpty()
  63. .filter { it.isDirectory }
  64. .filter { it.resolve(".nested-module.txt").exists() }
  65. .forEach { includeConsoleITPlugin("${projectPath}:", it) }
  66. }
  67. rootProject.projectDir
  68. .resolve("mirai-console/backend/integration-test/testers")
  69. .listFiles()?.asSequence().orEmpty()
  70. .filter { it.isDirectory }
  71. .forEach { includeConsoleITPlugin(":mirai-console.integration-test:", it) }
  72. // endregion
  73. includeConsoleProject(":mirai-console-compiler-common", "tools/compiler-common")
  74. includeConsoleProject(":mirai-console-intellij", "tools/intellij-plugin")
  75. includeConsoleProject(":mirai-console-gradle", "tools/gradle-plugin")
  76. @Suppress("ConstantConditionIf")
  77. if (!disableOldFrontEnds) {
  78. includeConsoleProject(":mirai-console-terminal", "frontend/mirai-console-terminal")
  79. println("JDK version: ${JavaVersion.current()}")
  80. if (JavaVersion.current() >= JavaVersion.VERSION_1_9) {
  81. includeConsoleProject(":mirai-console-graphical", "frontend/mirai-console-graphical")
  82. } else {
  83. println("当前使用的 JDK 版本为 ${System.getProperty("java.version")}, 请使用 JDK 9 以上版本引入模块 `:mirai-console-graphical`\n")
  84. }
  85. }
  86. includeProject(":ci-release-helper")
  87. val result = mutableListOf<ProjectDescriptor>()
  88. for (project in allProjects) {
  89. val validationDir = project.projectDir.resolve("compatibility-validation")
  90. if (!validationDir.exists()) continue
  91. validationDir.listFiles().orEmpty<File>().forEach { dir ->
  92. if (dir.resolve("build.gradle.kts").isFile) {
  93. val path = ":validator" + project.path + ":${dir.name}"
  94. include(path)
  95. project(path).projectDir = dir
  96. // project(path).name = "${project.name}-validator-${dir.name}"
  97. result.add(project(path))
  98. }
  99. }
  100. }