deploy-java.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env bash
  2. # DMS 一键部署脚本(Java 版):构建前端 + Maven 打包 + 组装发行包
  3. # 用法:在项目根目录执行 ./build/deploy-java.sh [--skip-frontend]
  4. set -e
  5. ROOT="$(cd "$(dirname "$0")/.." && pwd)"
  6. BACKEND="$ROOT/backend-java"
  7. FRONTEND="$ROOT/frontend"
  8. RELEASE="$ROOT/dist-package-java/dms-server"
  9. TEMPLATES="$ROOT/build/java-templates"
  10. SKIP_FRONTEND=0
  11. for arg in "$@"; do
  12. case "$arg" in
  13. --skip-frontend|-SkipFrontend) SKIP_FRONTEND=1 ;;
  14. esac
  15. done
  16. echo "========== DMS 一键部署(Java 版) =========="
  17. echo "项目根目录: $ROOT"
  18. # ---------- 1. 前端构建 ----------
  19. if [ "$SKIP_FRONTEND" -eq 0 ]; then
  20. echo "[1/4] 构建前端..."
  21. (cd "$FRONTEND" && { [ -d node_modules ] || npm install; } && npm run build)
  22. else
  23. echo "[1/4] 跳过前端构建 (--skip-frontend)"
  24. fi
  25. [ -f "$FRONTEND/dist/index.html" ] || { echo "错误:前端产物不存在,请先 npm run build"; exit 1; }
  26. # ---------- 2. Maven 打包 ----------
  27. echo "[2/4] Maven 打包..."
  28. (cd "$BACKEND" && mvn -q clean package -Pfrontend)
  29. [ -f "$BACKEND/target/dms-server.jar" ] || { echo "错误:未找到打包产物 dms-server.jar"; exit 1; }
  30. # ---------- 3. 整理发行包 ----------
  31. echo "[3/4] 整理发行包..."
  32. rm -rf "$RELEASE"
  33. mkdir -p "$RELEASE"
  34. cp "$BACKEND/target/dms-server.jar" "$RELEASE/"
  35. cp "$ROOT/backend/.env.example" "$RELEASE/"
  36. cp "$TEMPLATES/run.bat" "$TEMPLATES/run.sh" "$TEMPLATES/upgrade-db.bat" \
  37. "$TEMPLATES/upgrade-db.sh" "$TEMPLATES/README.txt" "$RELEASE/"
  38. if [ -f "$ROOT/tools/export_full_demo_data.py" ]; then
  39. echo " 导出示例数据库 SQL..."
  40. (cd "$ROOT/backend" && python "$ROOT/tools/export_full_demo_data.py" \
  41. --output "$RELEASE/database-init.sql") || echo "警告:导出示例数据库 SQL 失败,跳过"
  42. fi
  43. # ---------- 4. 从备份恢复 .env 和 dms-storage ----------
  44. echo "[4/4] 从备份恢复 .env 和 dms-storage..."
  45. BAK="$ROOT/dist-package-java-bak/dms-server"
  46. if [ -d "$BAK" ]; then
  47. [ -f "$BAK/.env" ] && cp "$BAK/.env" "$RELEASE/" && echo " 已恢复 .env"
  48. [ -d "$BAK/dms-storage" ] && cp -r "$BAK/dms-storage" "$RELEASE/" && echo " 已恢复 dms-storage"
  49. else
  50. echo " 备份目录不存在: $BAK - 跳过恢复"
  51. fi
  52. echo "========== 部署完成(Java 版) =========="
  53. echo "发行包目录: $RELEASE"