chore: restore parallel build with isolated build directories

main
ldl 4 months ago
parent b95de66ee0
commit 4bfd59b64f

291
Jenkinsfile vendored

@ -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 打包成功'
}
}

Loading…
Cancel
Save