diff --git a/Jenkinsfile b/Jenkinsfile index 7f7a2ff..4ffc250 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -176,152 +176,157 @@ pipeline { } } - stage('7. 四端并行打包') { + stage('7.1 CLI 打包 (JAR)') { when { expression { currentBuild.result == null || currentBuild.result == 'SUCCESS' || currentBuild.result == 'UNSTABLE' } } - parallel { - stage('7.1 CLI 打包 (JAR)') { - steps { - echo '========== 打包 CLI 应用 (JAR) ==========' - bat ''' - @echo off - set JAVA_HOME=%JAVA_HOME% - echo [CLI] 开始打包... - - REM 使用 CLI profile 打包 - mvn package -Pcli -DskipTests -Dmaven.compiler.skip=true - - echo [CLI] 检查生成的文件... - if exist target\\slms-1.0-SNAPSHOT-cli-shaded.jar ( - echo [CLI] ✓ CLI shaded JAR 生成成功 - for %%F in (target\\slms-1.0-SNAPSHOT-cli-shaded.jar) do echo [CLI] 大小: %%~zF bytes - ) else ( - echo [CLI] ⚠️ 错误: 找不到 CLI shaded JAR - echo [CLI] 检查 target 目录: - dir target\\*.jar - exit /b 1 - ) - ''' - echo '✓ CLI JAR 打包成功' - } - } - - stage('7.2 GUI 打包 (Swing JAR)') { - steps { - echo '========== 打包 GUI Swing 应用 (独立 JAR) ==========' - bat ''' - @echo off - set JAVA_HOME=%JAVA_HOME% - echo [GUI] 开始打包... - - REM 使用 gui-swing profile 生成独立 JAR - mvn package -Pgui-swing -DskipTests -Dmaven.compiler.skip=true - - echo [GUI] 检查生成的文件... - if exist target\\slms-1.0-SNAPSHOT-gui-swing.jar ( - echo [GUI] ✓ GUI Swing JAR 生成成功 - for %%F in (target\\slms-1.0-SNAPSHOT-gui-swing.jar) do echo [GUI] 大小: %%~zF bytes - ) else ( - echo [GUI] ⚠️ 错误: GUI Swing JAR 未找到 - echo [GUI] 检查 target 目录内容: - dir target\\*.jar - exit /b 1 - ) - ''' - echo '✓ GUI Swing JAR 打包成功' - } - } - - stage('7.3 Web 打包 (WAR)') { - steps { - echo '========== 打包 Web 应用 (WAR) ==========' - bat ''' - @echo off - set JAVA_HOME=%JAVA_HOME% - echo [Web] 开始打包... - - REM 使用 Web profile 打包 - mvn package -Pweb -DskipTests -Dmaven.compiler.skip=true - - echo [Web] 检查生成的文件... - if exist target\\slms-1.0-SNAPSHOT.war ( - echo [Web] ✓ Web WAR 生成成功 - for %%F in (target\\slms-1.0-SNAPSHOT.war) do echo [Web] 大小: %%~zF bytes - ) else ( - if exist target\\slms-1.0-SNAPSHOT.jar ( - echo [Web] ✓ Web JAR 生成成功 (备用) - for %%F in (target\\slms-1.0-SNAPSHOT.jar) do echo [Web] 大小: %%~zF bytes - ) else ( - echo [Web] ⚠️ 错误: 找不到 Web WAR/JAR - echo [Web] 检查 target 目录: - dir target\\*.war - dir target\\*.jar - exit /b 1 - ) - ) - ''' - echo '✓ Web WAR 打包成功' - } - } - - stage('7.4 Android Gradle 打包 (APK)') { - steps { - echo '========== 打包 Android 应用 (APK) ==========' - bat ''' - @echo off - setlocal EnableDelayedExpansion - set JAVA_HOME=%JAVA_HOME% - set ANDROID_HOME=%ANDROID_HOME% - - echo 打包 Android 应用... - - REM 使用 Gradle 打包 Android APK(不操作 target 目录) - call gradlew.bat :android:assembleDebug - - REM 先列出 APK 目录看文件名 - echo 列出 APK 目录: - dir android\\build\\outputs\\apk\\debug\\*.apk - - REM 检查并复制 APK - 如果文件名相同就跳过 - if exist android\\build\\outputs\\apk\\debug\\SLMS-debug.apk ( - echo ✓ 找到 SLMS-debug.apk - if /I "SLMS-debug.apk" NEQ "slms-debug.apk" ( - copy /Y android\\build\\outputs\\apk\\debug\\SLMS-debug.apk android\\build\\outputs\\apk\\debug\\slms-debug.apk >nul 2>&1 - ) - echo ✓ Android APK 打包完成: slms-debug.apk - exit /b 0 - ) - - if exist android\\build\\outputs\\apk\\debug\\android-debug.apk ( - echo ✓ 找到 android-debug.apk - copy /Y android\\build\\outputs\\apk\\debug\\android-debug.apk android\\build\\outputs\\apk\\debug\\slms-debug.apk >nul 2>&1 - echo ✓ Android APK 打包完成: slms-debug.apk - exit /b 0 - ) - - REM 尝试复制第一个找到的 APK - echo ⚠️ 警告: 找不到预期的 APK 文件,尝试复制第一个找到的 APK - set APK_FOUND=0 - for %%f in (android\\build\\outputs\\apk\\debug\\*.apk) do ( - if !APK_FOUND! EQU 0 ( - echo 找到 APK: %%f - copy /Y "%%f" android\\build\\outputs\\apk\\debug\\slms-debug.apk >nul 2>&1 - echo ✓ 已复制 %%f 为 slms-debug.apk - set APK_FOUND=1 - ) - ) - - if !APK_FOUND! EQU 0 ( - echo ✗ 错误: 完全找不到 APK 文件 - exit /b 1 - ) - - exit /b 0 - ''' - echo '✓ Android APK 打包成功' - } - } + steps { + echo '========== 打包 CLI 应用 (JAR) ==========' + bat ''' + @echo off + set JAVA_HOME=%JAVA_HOME% + echo [CLI] 开始打包... + + REM 使用 CLI profile 打包 + mvn package -Pcli -DskipTests -Dmaven.compiler.skip=true + + echo [CLI] 检查生成的文件... + if exist target\\slms-1.0-SNAPSHOT-cli-shaded.jar ( + echo [CLI] ✓ CLI shaded JAR 生成成功 + for %%F in (target\\slms-1.0-SNAPSHOT-cli-shaded.jar) do echo [CLI] 大小: %%~zF bytes + ) else ( + echo [CLI] ⚠️ 错误: 找不到 CLI shaded JAR + echo [CLI] 检查 target 目录: + dir target\\*.jar + exit /b 1 + ) + ''' + echo '✓ CLI JAR 打包成功' + } + } + + stage('7.2 GUI 打包 (Swing JAR)') { + when { + expression { currentBuild.result == null || currentBuild.result == 'SUCCESS' || currentBuild.result == 'UNSTABLE' } + } + steps { + echo '========== 打包 GUI Swing 应用 (独立 JAR) ==========' + bat ''' + @echo off + set JAVA_HOME=%JAVA_HOME% + echo [GUI] 开始打包... + + REM 使用 gui-swing profile 生成独立 JAR + mvn package -Pgui-swing -DskipTests -Dmaven.compiler.skip=true + + echo [GUI] 检查生成的文件... + if exist target\\slms-1.0-SNAPSHOT-gui-swing.jar ( + echo [GUI] ✓ GUI Swing JAR 生成成功 + for %%F in (target\\slms-1.0-SNAPSHOT-gui-swing.jar) do echo [GUI] 大小: %%~zF bytes + ) else ( + echo [GUI] ⚠️ 错误: GUI Swing JAR 未找到 + echo [GUI] 检查 target 目录内容: + dir target\\*.jar + exit /b 1 + ) + ''' + echo '✓ GUI Swing JAR 打包成功' + } + } + + stage('7.3 Web 打包 (WAR)') { + when { + expression { currentBuild.result == null || currentBuild.result == 'SUCCESS' || currentBuild.result == 'UNSTABLE' } + } + steps { + echo '========== 打包 Web 应用 (WAR) ==========' + bat ''' + @echo off + set JAVA_HOME=%JAVA_HOME% + echo [Web] 开始打包... + + REM 使用 Web profile 打包 + mvn package -Pweb -DskipTests -Dmaven.compiler.skip=true + + echo [Web] 检查生成的文件... + if exist target\\slms-1.0-SNAPSHOT.war ( + echo [Web] ✓ Web WAR 生成成功 + for %%F in (target\\slms-1.0-SNAPSHOT.war) do echo [Web] 大小: %%~zF bytes + ) else ( + if exist target\\slms-1.0-SNAPSHOT.jar ( + echo [Web] ✓ Web JAR 生成成功 (备用) + for %%F in (target\\slms-1.0-SNAPSHOT.jar) do echo [Web] 大小: %%~zF bytes + ) else ( + echo [Web] ⚠️ 错误: 找不到 Web WAR/JAR + echo [Web] 检查 target 目录: + dir target\\*.war + dir target\\*.jar + exit /b 1 + ) + ) + ''' + echo '✓ Web WAR 打包成功' + } + } + + stage('7.4 Android Gradle 打包 (APK)') { + when { + expression { currentBuild.result == null || currentBuild.result == 'SUCCESS' || currentBuild.result == 'UNSTABLE' } + } + steps { + echo '========== 打包 Android 应用 (APK) ==========' + bat ''' + @echo off + setlocal EnableDelayedExpansion + set JAVA_HOME=%JAVA_HOME% + set ANDROID_HOME=%ANDROID_HOME% + + echo 打包 Android 应用... + + REM 使用 Gradle 打包 Android APK(不操作 target 目录) + call gradlew.bat :android:assembleDebug + + REM 先列出 APK 目录看文件名 + echo 列出 APK 目录: + dir android\\build\\outputs\\apk\\debug\\*.apk + + REM 检查并复制 APK - 如果文件名相同就跳过 + if exist android\\build\\outputs\\apk\\debug\\SLMS-debug.apk ( + echo ✓ 找到 SLMS-debug.apk + if /I "SLMS-debug.apk" NEQ "slms-debug.apk" ( + copy /Y android\\build\\outputs\\apk\\debug\\SLMS-debug.apk android\\build\\outputs\\apk\\debug\\slms-debug.apk >nul 2>&1 + ) + echo ✓ Android APK 打包完成: slms-debug.apk + exit /b 0 + ) + + if exist android\\build\\outputs\\apk\\debug\\android-debug.apk ( + echo ✓ 找到 android-debug.apk + copy /Y android\\build\\outputs\\apk\\debug\\android-debug.apk android\\build\\outputs\\apk\\debug\\slms-debug.apk >nul 2>&1 + echo ✓ Android APK 打包完成: slms-debug.apk + exit /b 0 + ) + + REM 尝试复制第一个找到的 APK + echo ⚠️ 警告: 找不到预期的 APK 文件,尝试复制第一个找到的 APK + set APK_FOUND=0 + for %%f in (android\\build\\outputs\\apk\\debug\\*.apk) do ( + if !APK_FOUND! EQU 0 ( + echo 找到 APK: %%f + copy /Y "%%f" android\\build\\outputs\\apk\\debug\\slms-debug.apk >nul 2>&1 + echo ✓ 已复制 %%f 为 slms-debug.apk + set APK_FOUND=1 + ) + ) + + if !APK_FOUND! EQU 0 ( + echo ✗ 错误: 完全找不到 APK 文件 + exit /b 1 + ) + + exit /b 0 + ''' + echo '✓ Android APK 打包成功' } }