run.sh 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #!/usr/bin/env bash
  2. # ============================================
  3. # 服务管理中心 - 构建 + 打包 + 运行 一键脚本
  4. # ============================================
  5. set -euo pipefail
  6. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  7. ACTION="${1:-run}"
  8. # ---------- 颜色 ----------
  9. RED='\033[0;31m'
  10. GREEN='\033[0;32m'
  11. CYAN='\033[0;36m'
  12. NC='\033[0m'
  13. info() { echo -e "${CYAN}[INFO]${NC} $*"; }
  14. ok() { echo -e "${GREEN}[OK]${NC} $*"; }
  15. err() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
  16. # ---------- 帮助 ----------
  17. show_usage() {
  18. echo ""
  19. echo " 用法: ./run.sh [命令]"
  20. echo ""
  21. echo " 命令:"
  22. echo " (无参数) 构建前端 + 打包后端 + 启动服务"
  23. echo " build 仅构建前端 + 打包后端(不启动)"
  24. echo " run 构建 + 打包 + 启动(同默认行为)"
  25. echo " clean 清理所有构建产物和运行时数据"
  26. echo " help 显示此帮助信息"
  27. echo ""
  28. exit 0
  29. }
  30. case "$ACTION" in
  31. help|-h|--help) show_usage ;;
  32. esac
  33. echo ""
  34. echo "============================================"
  35. echo " 服务管理中心 - $ACTION"
  36. echo "============================================"
  37. echo ""
  38. # ---------- 检查环境 ----------
  39. check_cmd() {
  40. if ! command -v "$1" &>/dev/null; then
  41. err "未找到 $1,请确保已安装并加入 PATH"
  42. exit 1
  43. fi
  44. }
  45. check_cmd java
  46. check_cmd mvn
  47. check_cmd node
  48. # ---------- 清理 ----------
  49. if [ "$ACTION" = "clean" ]; then
  50. info "清理前端构建产物..."
  51. rm -rf "$SCRIPT_DIR/frontend/dist"
  52. rm -rf "$SCRIPT_DIR/backend/src/main/resources/static"
  53. info "清理后端构建产物..."
  54. rm -rf "$SCRIPT_DIR/backend/target"
  55. info "清理运行时数据..."
  56. rm -rf "$SCRIPT_DIR/data"
  57. echo ""
  58. ok "清理完成"
  59. exit 0
  60. fi
  61. # ---------- 构建前端 ----------
  62. info "[1/4] 安装前端依赖..."
  63. cd "$SCRIPT_DIR/frontend"
  64. npm install --silent 2>/dev/null
  65. info "[2/4] 构建前端..."
  66. npx vite build
  67. info "[3/4] 复制前端产物到后端静态资源目录..."
  68. rm -rf "$SCRIPT_DIR/backend/src/main/resources/static"
  69. cp -r "$SCRIPT_DIR/frontend/dist" "$SCRIPT_DIR/backend/src/main/resources/static"
  70. # ---------- 打包后端 ----------
  71. info "[4/4] 打包后端 (mvn package)..."
  72. cd "$SCRIPT_DIR/backend"
  73. mvn package -DskipTests -q
  74. echo ""
  75. ok "构建打包完成!"
  76. echo ""
  77. if [ "$ACTION" = "build" ]; then
  78. echo "提示: 使用 ./run.sh run 启动服务"
  79. exit 0
  80. fi
  81. # ---------- 运行 ----------
  82. echo "----------------------------------------"
  83. echo " 启动服务 (端口 3945)"
  84. echo " 访问 http://localhost:3945"
  85. echo " 按 Ctrl+C 停止"
  86. echo "----------------------------------------"
  87. echo ""
  88. cd "$SCRIPT_DIR/backend"
  89. exec java -jar target/service-management-1.0.0.jar