From f47a88741d02cafd33b284a5fa3f4cc46e7624b2 Mon Sep 17 00:00:00 2001 From: LTFan Date: Fri, 26 Apr 2024 18:34:51 +0800 Subject: [PATCH] 1 --- build.gradle.kts | 93 +++++++++++-------- buildSrc/src/main/kotlin/SystemEnvironment.kt | 5 + 2 files changed, 58 insertions(+), 40 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 72af13b..30418fa 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -123,33 +123,42 @@ tasks.register("releaseAndroidApp") { dependsOn("compose-app:assembleRelease") doLast { - val apkDir = file(project(":compose-app").layout.buildDirectory.dir("outputs/apk/release")) + val apkDir = file(project("compose-app").layout.buildDirectory.dir("outputs/apk/release")) val outputDir = file(outputDirectoryOf("android")) apkDir.copyRecursively(outputDir, overwrite = true) logger.lifecycle("output directory: ${outputDir.absolutePath}") } } -tasks.register("releaseLinuxApp") { +tasks.register("releaseDesktopAppUberJar") { group = "project build" - description = "Build the Linux release executable" + description = "Build the desktop release uber jar" - if (!SystemEnvironment.isLinux) { - enabled = false - } + dependsOn("compose-app:packageReleaseUberJarForCurrentOS") - dependsOn("compose-app:packageReleaseAppImage", "compose-app:packageReleaseDeb", "compose-app:packageReleaseRpm") + doLast { + val outputDir = file(outputDirectoryOf("desktop-uber-jar")) + file(project("compose-app").layout.buildDirectory.dir("compose/jars")).listFiles() + ?.filter { it.name.contains("$projectDevVer.$projectReversion") && it.name.endsWith(".jar") }?.forEach { + val arch = Regex(".+?-.+?-(.+?)-.+").find(it.name)?.groupValues?.get(1) ?: return@forEach + it.copyTo( + outputDir.resolve("fhraise-${SystemEnvironment.type}-$projectVersion.$projectBuildNumber-${arch}.jar"), + overwrite = true + ) + logger.lifecycle("output directory: ${outputDir.absolutePath}") + } + } } -tasks.register("releaseTarLinuxApp") { +tasks.register("releaseLinuxAppAndTar") { group = "project build" - description = "Build the Linux release tar" + description = "Build the Linux release and create a tar archive" if (!SystemEnvironment.isLinux) { enabled = false } - dependsOn("releaseLinuxApp") + dependsOn("compose-app:packageReleaseAppImage") archiveBaseName = "fhraise" archiveAppendix = "linux" @@ -161,26 +170,15 @@ tasks.register("releaseTarLinuxApp") { from(file(outputDirectoryOf("desktop/main-release/app/Fhraise"))) } -tasks.register("releaseWindowsApp") { - group = "project build" - description = "Build the Windows release executable" - - if (!SystemEnvironment.isWindows) { - enabled = false - } - - dependsOn("compose-app:packageReleaseAppImage", "compose-app:packageReleaseMsi") -} - -tasks.register("releaseZipWindowsApp") { +tasks.register("releaseWindowsAppAndZip") { group = "project build" - description = "Build the Windows release zip" + description = "Build the Windows release and create a zip archive" if (!SystemEnvironment.isWindows) { enabled = false } - dependsOn("releaseWindowsApp") + dependsOn("compose-app:packageReleaseAppImage") archiveBaseName = "fhraise" archiveAppendix = "windows" @@ -191,25 +189,27 @@ tasks.register("releaseZipWindowsApp") { from(file(outputDirectoryOf("desktop/main-release/app/Fhraise"))) } -tasks.register("releaseDesktopApp") { +tasks.register("releaseDesktopAppAndArchive") { group = "project build" - description = "Build the desktop release" + description = "Build the desktop release and create an archive" if (SystemEnvironment.isLinux) { - dependsOn("releaseLinuxApp") + dependsOn("releaseLinuxAppAndTar") } else if (SystemEnvironment.isWindows) { - dependsOn("releaseWindowsApp") + dependsOn("releaseWindowsAppAndZip") } } -tasks.register("releaseArchiveDesktopApp") { +tasks.register("releaseDesktopApp") { group = "project build" - description = "Build the desktop release archive" + description = "Build the desktop release" + + dependsOn("releaseDesktopAppArchive", "releaseDesktopAppUberJar") if (SystemEnvironment.isLinux) { - dependsOn("releaseTarLinuxApp") + dependsOn("compose-app:packageReleaseDeb", "compose-app:packageReleaseRpm", "releaseDesktopUberJarApp") } else if (SystemEnvironment.isWindows) { - dependsOn("releaseZipWindowsApp") + dependsOn("compose-app:packageReleaseMsi") } } @@ -224,9 +224,9 @@ tasks.register("releaseWebApp") { } } -tasks.register("releaseTarWebApp") { +tasks.register("releaseWebAppAndTar") { group = "project build" - description = "Build the Web release tar" + description = "Build the Web release and create a tar archive" dependsOn("releaseWebApp") @@ -246,7 +246,7 @@ tasks.register("releaseServer") { dependsOn("server:shadowJar") doLast { - val jar = file(project(":server").layout.buildDirectory.file("libs/server-all.jar")) + val jar = file(project("server").layout.buildDirectory.file("libs/server-all.jar")) val outputDir = file(outputDirectoryOf("server")) jar.copyTo(outputDir.resolve("fhraise-server-$projectVersion.$projectBuildNumber.jar"), overwrite = true) logger.lifecycle("output directory: ${outputDir.absolutePath}") @@ -268,9 +268,13 @@ tasks.register("ciVersioning") { tasks.register("ciReleaseLinuxApp") { group = "ci" - description = "Build on the linux platform" + description = "Build on the Linux platform" + + if (!SystemEnvironment.isLinux) { + enabled = false + } - dependsOn("releaseAndroidApp", "releaseTarLinuxApp", "releaseTarWebApp", "releaseServer") + dependsOn("releaseAndroidApp", "releaseDesktopApp", "releaseWebAppAndTar", "releaseServer") doLast { val assetsDir = file(layout.buildDirectory.dir("assets")) @@ -297,9 +301,13 @@ tasks.register("ciReleaseLinuxApp") { tasks.register("ciReleaseWindowsApp") { group = "ci" - description = "Build on the windows platform" + description = "Build on the Windows platform" - dependsOn("releaseZipWindowsApp") + if (!SystemEnvironment.isWindows) { + enabled = false + } + + dependsOn("releaseDesktopApp") doLast { val assetsDir = file(layout.buildDirectory.dir("assets")) @@ -320,13 +328,18 @@ tasks.register("ciReleaseApp") { } else if (SystemEnvironment.isWindows) { dependsOn("ciReleaseWindowsApp") } + + doLast { + val assetsDir = file(layout.buildDirectory.dir("assets")) + file(outputDirectoryOf("desktop-uber-jar")).copyRecursively(assetsDir, overwrite = true) + } } tasks.register("release") { group = "project build" description = "Create a new release" - dependsOn("versioning", "releaseAndroidApp", "releaseLinuxApp", "releaseWindowsApp", "releaseWebApp") + dependsOn("versioning", "releaseAndroidApp", "releaseDesktopApp", "releaseWebApp", "releaseServer") } tasks.register("cleanReleases") { diff --git a/buildSrc/src/main/kotlin/SystemEnvironment.kt b/buildSrc/src/main/kotlin/SystemEnvironment.kt index 93806a8..667ec68 100644 --- a/buildSrc/src/main/kotlin/SystemEnvironment.kt +++ b/buildSrc/src/main/kotlin/SystemEnvironment.kt @@ -23,5 +23,10 @@ import org.gradle.internal.os.OperatingSystem object SystemEnvironment { val isLinux = OperatingSystem.current().isLinux val isWindows = OperatingSystem.current().isWindows + val type = when { + isLinux -> "linux" + isWindows -> "windows" + else -> "unknown" + } val arch: String = System.getProperty("os.arch") }