123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*
- * Copyright 2019-2023 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/dev/LICENSE
- */
- @file:Suppress("UnusedImport")
- plugins {
- kotlin("jvm")
- id("java-gradle-plugin")
- }
- dependencies {
- implementation(gradleApi())
- implementation(gradleKotlinDsl())
- implementation(`kotlin-reflect`)
- implementation(kotlin("gradle-plugin-api"))
- implementation(kotlin("gradle-plugin"))
- implementation(kotlin("stdlib"))
- api("com.github.jengelman.gradle.plugins:shadow:6.0.0")
- api(`jetbrains-annotations`)
- testImplementation(kotlin("test-junit5"))
- testImplementation(`junit-jupiter-api`)
- testImplementation(`junit-jupiter-params`)
- testRuntimeOnly(`junit-jupiter-engine`)
- }
- tasks.getByName("test", Test::class) {
- environment("mirai.root.project.dir", rootProject.projectDir.absolutePath)
- systemProperty("mirai.deps.test.must.run", System.getProperty("mirai.deps.test.must.run"))
- }
- val publishMiraiArtifactsToMavenLocal by tasks.registering {
- group = "mirai"
- description = "Publish all mirai artifacts to MavenLocal"
- val publishTasks = rootProject.allprojects.mapNotNull { proj ->
- proj.tasks.findByName("publishToMavenLocal")
- }
- dependsOn(publishTasks)
- doFirst {
- // Always print this very important message
- logger.warn("[publishMiraiArtifactsToMavenLocal] Project version is '${project.version}'.")
- }
- }
- tasks.getByName("test") {
- mustRunAfter(publishMiraiArtifactsToMavenLocal)
- }
- tasks.register("updateProjectVersionForLocalDepsTest") {
- doLast {
- setProjectVersionForFutureBuilds(DEPS_TEST_VERSION)
- }
- }
- tasks.register("generateBuildConfig") {
- group = "mirai"
- doLast {
- generateBuildConfig()
- }
- tasks.getByName("testClasses").dependsOn(this)
- tasks.getByName("compileTestKotlin").dependsOn(this)
- }
- generateBuildConfig() // somehow "generateBuildConfig" won't execute
- fun generateBuildConfig() {
- val text = """
- package net.mamoe.mirai.deps.test
-
- /**
- * This file was generated by Gradle task `generateBuildConfig`.
- */
- object BuildConfig {
- /**
- * Kotlin version used to compile mirai-core
- */
- const val kotlinVersion = "${Versions.kotlinCompiler}"
- }
- """.trimIndent() + "\n"
- val file = project.projectDir.resolve("test/BuildConfig.kt")
- if (!file.exists() || file.readText() != text) {
- file.writeText(text)
- }
- }
- /**
- * Kind note: To run this task you probably need a lot of host memory and luck.
- *
- * **If you see errors, don't panic, that's most probably not your fault.**
- *
- * Try:
- *
- * ```shell
- * ./gradlew :mirai-deps-test:updateProjectVersionForLocalDepsTest
- * ./gradlew clean :mirai-deps-test:publishMiraiArtifactsToMavenLocal "-Porg.gradle.parallel=false"
- * ```
- * Note this will change your project version in `buildSrc/src/main/kotlin/Versions.kt`. Be careful to change it back before committing!
- * Note also this is **extremely slow**. If your computer isn't good enough it may take hours.
- */
- val publishMiraiLocalArtifacts = tasks.register("publishMiraiLocalArtifacts", Exec::class) {
- group = "mirai"
- description = "Starts a child process to publish v$DEPS_TEST_VERSION artifacts to MavenLocal"
- workingDir(rootProject.projectDir)
- environment("mirai.build.project.version", DEPS_TEST_VERSION)
- commandLine(
- "./gradlew",
- "clean",
- publishMiraiArtifactsToMavenLocal.name,
- "--no-daemon",
- "--stacktrace",
- "--scan",
- "-Pkotlin.compiler.execution.strategy=in-process"
- )
- standardOutput = System.out
- errorOutput = System.err
- }
- version = Versions.core
|