build-windows.bat 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. @echo off
  2. REM ============================================================
  3. REM 在 Windows 上把 Parking Simulator 打包成绿色免安装目录。
  4. REM 产物:dist\win\ParkingSimulator\ParkingSimulator.exe
  5. REM
  6. REM 依赖:
  7. REM - JDK 25 (含 jlink / jpackage)
  8. REM - Maven 3.9+
  9. REM
  10. REM jpackage --type app-image 不需要 WiX;如需 .msi/.exe 安装包
  11. REM 把脚本末尾的注释段取消即可(需要先安装 WiX 3.x)。
  12. REM ============================================================
  13. setlocal EnableExtensions EnableDelayedExpansion
  14. cd /d "%~dp0\.."
  15. set APP_NAME=ParkingSimulator
  16. set APP_VERSION=1.0.0
  17. set APP_VENDOR=Fujica
  18. set MAIN_MODULE=com.fujica.parkingtool
  19. set MAIN_CLASS=com.fujica.parkingtool.App
  20. set OUT_DIR=dist\win
  21. set RUNTIME_DIR=target\runtime-win
  22. set MODULE_PATH=target\modules
  23. set RUNTIME_MODULES=%MAIN_MODULE%,javafx.base,javafx.graphics,javafx.controls,jdk.localedata,jdk.crypto.ec,jdk.crypto.cryptoki
  24. where mvn >nul 2>nul || (echo [ERR] 找不到 mvn & exit /b 1)
  25. where jlink >nul 2>nul || (echo [ERR] 找不到 jlink & exit /b 1)
  26. where jpackage >nul 2>nul || (echo [ERR] 找不到 jpackage & exit /b 1)
  27. echo ==^> [1/4] Maven 构建 + 拉取依赖到 target\modules
  28. call mvn -q -DskipTests clean package || exit /b 1
  29. echo ==^> [2/4] jlink 生成最小运行时 -> %RUNTIME_DIR%
  30. if exist "%RUNTIME_DIR%" rmdir /s /q "%RUNTIME_DIR%"
  31. jlink ^
  32. --module-path "%JAVA_HOME%\jmods;%MODULE_PATH%" ^
  33. --add-modules %RUNTIME_MODULES% ^
  34. --no-header-files ^
  35. --no-man-pages ^
  36. --strip-debug ^
  37. --strip-native-commands ^
  38. --compress=zip-9 ^
  39. --output "%RUNTIME_DIR%" || exit /b 1
  40. echo ==^> [3/4] jpackage 生成绿色目录 -> %OUT_DIR%
  41. if exist "%OUT_DIR%" rmdir /s /q "%OUT_DIR%"
  42. mkdir "%OUT_DIR%"
  43. set ICON_ARG=
  44. if exist "src\main\resources\com\fujica\parkingtool\icon.ico" (
  45. set ICON_ARG=--icon src\main\resources\com\fujica\parkingtool\icon.ico
  46. )
  47. jpackage ^
  48. --type app-image ^
  49. --name %APP_NAME% ^
  50. --app-version %APP_VERSION% ^
  51. --vendor "%APP_VENDOR%" ^
  52. --module-path "%MODULE_PATH%" ^
  53. --module "%MAIN_MODULE%/%MAIN_CLASS%" ^
  54. --runtime-image "%RUNTIME_DIR%" ^
  55. --dest "%OUT_DIR%" ^
  56. --java-options "-Xms32m" ^
  57. --java-options "-Xmx256m" ^
  58. --java-options "-XX:+UseSerialGC" ^
  59. --java-options "-Dprism.lcdtext=false" ^
  60. %ICON_ARG% || exit /b 1
  61. echo ==^> [4/4] 完成
  62. echo [OK] 产物:%OUT_DIR%\%APP_NAME%\%APP_NAME%.exe
  63. echo 整个 %OUT_DIR%\%APP_NAME% 文件夹可拷贝到任意 Windows 机器上双击运行。
  64. REM === 可选:打包 .msi 安装程序(需要预装 WiX 3.x) ===
  65. REM jpackage ^
  66. REM --type msi ^
  67. REM --name %APP_NAME% ^
  68. REM --app-version %APP_VERSION% ^
  69. REM --vendor "%APP_VENDOR%" ^
  70. REM --module-path "%MODULE_PATH%" ^
  71. REM --module "%MAIN_MODULE%/%MAIN_CLASS%" ^
  72. REM --runtime-image "%RUNTIME_DIR%" ^
  73. REM --dest "%OUT_DIR%" ^
  74. REM --win-dir-chooser --win-shortcut --win-menu ^
  75. REM %ICON_ARG%
  76. endlocal