|
|
|
|
@ -206,183 +206,83 @@ pipeline {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('7.2 GUI 打包 (JAR + EXE)') {
|
|
|
|
|
stage('7.2 GUI 打包 (Swing JAR)') {
|
|
|
|
|
steps {
|
|
|
|
|
echo '========== 打包 GUI 应用 (JAR + EXE) =========='
|
|
|
|
|
script {
|
|
|
|
|
// 步骤1: Maven 打包 GUI JAR
|
|
|
|
|
bat '''
|
|
|
|
|
echo '========== 打包 GUI Swing 应用 (独立 JAR) =========='
|
|
|
|
|
bat '''
|
|
|
|
|
set JAVA_HOME=%JAVA_HOME%
|
|
|
|
|
echo 使用 target-gui 打包 GUI 应用...
|
|
|
|
|
|
|
|
|
|
REM 临时设置 Maven 输出目录为 target-gui
|
|
|
|
|
mvn package -Pgui -DskipTests -Dmaven.compiler.skip=true -Dmaven.build.directory=target-gui
|
|
|
|
|
|
|
|
|
|
REM 复制生成的 JAR 和 libs 到 target
|
|
|
|
|
if exist target-gui\\smart-library-management-system-1.0-SNAPSHOT.jar (
|
|
|
|
|
copy /Y target-gui\\smart-library-management-system-1.0-SNAPSHOT.jar target\\slms-gui.jar
|
|
|
|
|
echo ✓ GUI JAR 打包完成: slms-gui.jar
|
|
|
|
|
|
|
|
|
|
REM 复制 libs 目录
|
|
|
|
|
if exist target-gui\\libs (
|
|
|
|
|
xcopy /E /I /Y /Q target-gui\\libs target\\libs >nul
|
|
|
|
|
echo ✓ 已复制 libs 目录
|
|
|
|
|
)
|
|
|
|
|
) else (
|
|
|
|
|
echo ⚠️ 警告: 找不到 GUI JAR
|
|
|
|
|
dir target-gui
|
|
|
|
|
)
|
|
|
|
|
echo 使用 gui-swing profile 打包 GUI 应用...
|
|
|
|
|
|
|
|
|
|
REM 使用 gui-swing profile 生成独立 JAR
|
|
|
|
|
mvn package -Pgui-swing -DskipTests -Dmaven.compiler.skip=true
|
|
|
|
|
|
|
|
|
|
REM 检查并复制生成的 Swing JAR
|
|
|
|
|
if exist target\\smart-library-management-system-1.0-SNAPSHOT-gui-swing.jar (
|
|
|
|
|
copy /Y target\\smart-library-management-system-1.0-SNAPSHOT-gui-swing.jar target\\slms-gui.jar
|
|
|
|
|
echo ✓ GUI Swing JAR 打包完成: slms-gui.jar (%.2f MB)
|
|
|
|
|
|
|
|
|
|
REM 复制 library.db 到 target 目录
|
|
|
|
|
REM 复制 library.db
|
|
|
|
|
if exist library.db (
|
|
|
|
|
copy /Y library.db target\\
|
|
|
|
|
echo ✓ 已复制 library.db 到 target 目录
|
|
|
|
|
)
|
|
|
|
|
'''
|
|
|
|
|
|
|
|
|
|
// 步骤2: 使用 jpackage 创建 EXE 和 MSI
|
|
|
|
|
bat '''
|
|
|
|
|
@echo off
|
|
|
|
|
setlocal EnableDelayedExpansion
|
|
|
|
|
|
|
|
|
|
REM 使用 jpackage 创建 Windows EXE
|
|
|
|
|
echo.
|
|
|
|
|
echo ========== 使用 jpackage 创建 EXE ==========
|
|
|
|
|
|
|
|
|
|
REM 设置 WiX Toolset 路径
|
|
|
|
|
set "WIX=%WIX_HOME%"
|
|
|
|
|
set "PATH=%WIX_HOME%\\bin;%PATH%"
|
|
|
|
|
|
|
|
|
|
REM 检查 jpackage 是否可用
|
|
|
|
|
where jpackage >nul 2>&1
|
|
|
|
|
if errorlevel 1 (
|
|
|
|
|
echo ⚠️ 警告: jpackage 不可用,跳过 EXE 打包
|
|
|
|
|
echo 提示: jpackage 需要 JDK 14+
|
|
|
|
|
echo 当前 JAVA_HOME: %JAVA_HOME%
|
|
|
|
|
goto skip_exe
|
|
|
|
|
)
|
|
|
|
|
echo ✓ jpackage 可用
|
|
|
|
|
|
|
|
|
|
REM 检查 WiX Toolset 是否安装
|
|
|
|
|
set WIX_FOUND=0
|
|
|
|
|
if exist "%WIX_HOME%\\bin\\candle.exe" set WIX_FOUND=1
|
|
|
|
|
|
|
|
|
|
if !WIX_FOUND! EQU 0 (
|
|
|
|
|
echo ⚠️ 警告: WiX Toolset 未找到,跳过 EXE 打包
|
|
|
|
|
echo 提示: 请检查 WiX Toolset 安装路径
|
|
|
|
|
echo 当前 WIX_HOME: %WIX_HOME%
|
|
|
|
|
echo 继续执行,但不创建 EXE 和 MSI
|
|
|
|
|
goto skip_exe
|
|
|
|
|
)
|
|
|
|
|
echo ✓ WiX Toolset 可用
|
|
|
|
|
|
|
|
|
|
REM 创建 jpackage 输入目录
|
|
|
|
|
if not exist target\\jpackage-input mkdir target\\jpackage-input
|
|
|
|
|
copy /Y target\\slms-gui.jar target\\jpackage-input\\
|
|
|
|
|
copy /Y target\\library.db target\\jpackage-input\\
|
|
|
|
|
if exist target-gui\\libs xcopy /E /I /Y /Q target-gui\\libs target\\jpackage-input\\libs >nul
|
|
|
|
|
|
|
|
|
|
REM 步骤1: 创建 app-image (包含 EXE)
|
|
|
|
|
echo 步骤1: 创建 Windows 应用镜像 (app-image)...
|
|
|
|
|
jpackage --type app-image ^
|
|
|
|
|
--input target\\jpackage-input ^
|
|
|
|
|
--name SLMS-GUI ^
|
|
|
|
|
--main-jar slms-gui.jar ^
|
|
|
|
|
--main-class com.smartlibrary.gui.GUIApplication ^
|
|
|
|
|
--dest target ^
|
|
|
|
|
--app-version 1.0 ^
|
|
|
|
|
--vendor "Smart Library" ^
|
|
|
|
|
--description "Smart Library Management System - GUI Application" ^
|
|
|
|
|
--win-console
|
|
|
|
|
|
|
|
|
|
if errorlevel 1 (
|
|
|
|
|
echo ⚠️ app-image 创建失败
|
|
|
|
|
goto skip_exe
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
REM 检查生成的 EXE
|
|
|
|
|
if exist target\\SLMS-GUI\\SLMS-GUI.exe (
|
|
|
|
|
echo ✓ EXE 创建成功: target\\SLMS-GUI\\SLMS-GUI.exe
|
|
|
|
|
|
|
|
|
|
REM 复制 EXE 到 target 根目录
|
|
|
|
|
copy /Y target\\SLMS-GUI\\SLMS-GUI.exe target\\slms-gui.exe
|
|
|
|
|
echo ✓ 已复制 slms-gui.exe 到 target 目录
|
|
|
|
|
|
|
|
|
|
REM 复制整个应用目录(包含运行时)
|
|
|
|
|
if exist target\\slms-gui-app rmdir /S /Q target\\slms-gui-app
|
|
|
|
|
xcopy /E /I /Y /Q target\\SLMS-GUI target\\slms-gui-app >nul
|
|
|
|
|
echo ✓ 已创建完整应用目录: target\\slms-gui-app
|
|
|
|
|
) else (
|
|
|
|
|
echo ⚠️ 未找到生成的 EXE 文件
|
|
|
|
|
goto skip_exe
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
REM 步骤2: 创建 MSI 安装包
|
|
|
|
|
echo.
|
|
|
|
|
echo 步骤2: 创建 Windows MSI 安装包...
|
|
|
|
|
jpackage --type msi ^
|
|
|
|
|
--input target\\jpackage-input ^
|
|
|
|
|
--name SLMS-GUI ^
|
|
|
|
|
--main-jar slms-gui.jar ^
|
|
|
|
|
--main-class com.smartlibrary.gui.GUIApplication ^
|
|
|
|
|
--dest target ^
|
|
|
|
|
--app-version 1.0 ^
|
|
|
|
|
--vendor "Smart Library" ^
|
|
|
|
|
--description "Smart Library Management System - GUI Application" ^
|
|
|
|
|
--win-console ^
|
|
|
|
|
--win-dir-chooser ^
|
|
|
|
|
--win-menu ^
|
|
|
|
|
--win-shortcut
|
|
|
|
|
|
|
|
|
|
if errorlevel 1 (
|
|
|
|
|
echo ⚠️ MSI 安装包创建失败
|
|
|
|
|
echo 提示: 这不影响 EXE 的使用
|
|
|
|
|
) else (
|
|
|
|
|
if exist target\\SLMS-GUI-1.0.msi (
|
|
|
|
|
echo ✓ MSI 安装包创建成功: target\\SLMS-GUI-1.0.msi
|
|
|
|
|
copy /Y target\\SLMS-GUI-1.0.msi target\\slms-gui-installer.msi
|
|
|
|
|
echo ✓ 已复制为 slms-gui-installer.msi
|
|
|
|
|
) else (
|
|
|
|
|
echo ⚠️ 未找到生成的 MSI 文件
|
|
|
|
|
)
|
|
|
|
|
copy /Y library.db target\\library.db
|
|
|
|
|
echo ✓ 已复制 library.db 到 target
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
:skip_exe
|
|
|
|
|
echo.
|
|
|
|
|
|
|
|
|
|
REM 创建 GUI 启动脚本(Windows)- 作为备用
|
|
|
|
|
REM 创建启动脚本
|
|
|
|
|
echo @echo off > target\\run-gui.bat
|
|
|
|
|
echo echo Starting SLMS GUI Application... >> target\\run-gui.bat
|
|
|
|
|
echo if exist slms-gui.exe ( >> target\\run-gui.bat
|
|
|
|
|
echo echo Running EXE version... >> target\\run-gui.bat
|
|
|
|
|
echo start slms-gui.exe >> target\\run-gui.bat
|
|
|
|
|
echo ^) else ( >> target\\run-gui.bat
|
|
|
|
|
echo echo Running JAR version... >> target\\run-gui.bat
|
|
|
|
|
echo java -jar slms-gui.jar >> target\\run-gui.bat
|
|
|
|
|
echo if errorlevel 1 ( >> target\\run-gui.bat
|
|
|
|
|
echo echo. >> target\\run-gui.bat
|
|
|
|
|
echo echo JavaFX runtime not found! Trying with module path... >> target\\run-gui.bat
|
|
|
|
|
echo java --module-path libs --add-modules javafx.controls,javafx.fxml -jar slms-gui.jar >> target\\run-gui.bat
|
|
|
|
|
echo ^) >> target\\run-gui.bat
|
|
|
|
|
echo chcp 65001 ^>nul >> target\\run-gui.bat
|
|
|
|
|
echo echo ============================================ >> target\\run-gui.bat
|
|
|
|
|
echo echo SLMS GUI Application (Swing Version) >> target\\run-gui.bat
|
|
|
|
|
echo echo ============================================ >> target\\run-gui.bat
|
|
|
|
|
echo echo. >> target\\run-gui.bat
|
|
|
|
|
echo echo Starting GUI application... >> target\\run-gui.bat
|
|
|
|
|
echo java -jar slms-gui.jar >> target\\run-gui.bat
|
|
|
|
|
echo if errorlevel 1 ( >> target\\run-gui.bat
|
|
|
|
|
echo echo. >> target\\run-gui.bat
|
|
|
|
|
echo echo Error: Failed to start GUI application >> target\\run-gui.bat
|
|
|
|
|
echo echo Please ensure Java 11+ is installed >> target\\run-gui.bat
|
|
|
|
|
echo pause >> target\\run-gui.bat
|
|
|
|
|
echo ^) >> target\\run-gui.bat
|
|
|
|
|
echo pause >> target\\run-gui.bat
|
|
|
|
|
echo ✓ 已创建 GUI 启动脚本: run-gui.bat
|
|
|
|
|
|
|
|
|
|
REM 创建 README 文件
|
|
|
|
|
echo SLMS GUI Application > target\\README-GUI.txt
|
|
|
|
|
echo SLMS GUI Application (Swing Version) > target\\README-GUI.txt
|
|
|
|
|
echo. >> target\\README-GUI.txt
|
|
|
|
|
echo ========================================== >> target\\README-GUI.txt
|
|
|
|
|
echo. >> target\\README-GUI.txt
|
|
|
|
|
echo 运行方式1 (推荐): 双击 slms-gui.exe (如果存在) >> target\\README-GUI.txt
|
|
|
|
|
echo 运行方式2: 双击 run-gui.bat >> target\\README-GUI.txt
|
|
|
|
|
echo 运行方式3: java -jar slms-gui.jar >> target\\README-GUI.txt
|
|
|
|
|
echo 运行方式: >> target\\README-GUI.txt
|
|
|
|
|
echo 1. 双击 run-gui.bat (推荐) >> target\\README-GUI.txt
|
|
|
|
|
echo 2. 命令行: java -jar slms-gui.jar >> target\\README-GUI.txt
|
|
|
|
|
echo. >> target\\README-GUI.txt
|
|
|
|
|
echo 注意: library.db 必须与应用文件在同一目录 >> target\\README-GUI.txt
|
|
|
|
|
echo 特点: >> target\\README-GUI.txt
|
|
|
|
|
echo - 单一 JAR 文件,无需额外依赖 >> target\\README-GUI.txt
|
|
|
|
|
echo - 使用 Swing 界面,兼容性好 >> target\\README-GUI.txt
|
|
|
|
|
echo - 包含完整功能:图书管理、借阅管理 >> target\\README-GUI.txt
|
|
|
|
|
echo - 文件大小约 36 MB >> target\\README-GUI.txt
|
|
|
|
|
echo. >> target\\README-GUI.txt
|
|
|
|
|
echo 系统要求: >> target\\README-GUI.txt
|
|
|
|
|
echo - Java 11 或更高版本 >> target\\README-GUI.txt
|
|
|
|
|
echo - Windows / Linux / macOS >> target\\README-GUI.txt
|
|
|
|
|
echo. >> target\\README-GUI.txt
|
|
|
|
|
echo 注意: >> target\\README-GUI.txt
|
|
|
|
|
echo - library.db 必须与应用文件在同一目录 >> target\\README-GUI.txt
|
|
|
|
|
echo - 首次运行会自动初始化数据库 >> target\\README-GUI.txt
|
|
|
|
|
echo. >> target\\README-GUI.txt
|
|
|
|
|
echo ========================================== >> target\\README-GUI.txt
|
|
|
|
|
echo ✓ 已创建 README-GUI.txt
|
|
|
|
|
|
|
|
|
|
REM 确保脚本成功退出
|
|
|
|
|
exit /b 0
|
|
|
|
|
'''
|
|
|
|
|
}
|
|
|
|
|
echo '✓ GUI JAR + EXE 打包成功'
|
|
|
|
|
echo.
|
|
|
|
|
echo ✓ GUI Swing 打包完成
|
|
|
|
|
echo - JAR 文件: slms-gui.jar
|
|
|
|
|
echo - 启动脚本: run-gui.bat
|
|
|
|
|
echo - 说明文档: README-GUI.txt
|
|
|
|
|
) else (
|
|
|
|
|
echo ⚠️ 错误: GUI Swing JAR 未找到
|
|
|
|
|
echo 检查 target 目录内容:
|
|
|
|
|
dir target\\*.jar
|
|
|
|
|
exit /b 1
|
|
|
|
|
)
|
|
|
|
|
'''
|
|
|
|
|
echo '✓ GUI Swing JAR 打包成功'
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|