| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/usr/bin/env bash
- # DMS 一键部署脚本(Java 版):构建前端 + Maven 打包 + 组装发行包
- # 用法:在项目根目录执行 ./build/deploy-java.sh [--skip-frontend]
- set -e
- ROOT="$(cd "$(dirname "$0")/.." && pwd)"
- BACKEND="$ROOT/backend-java"
- FRONTEND="$ROOT/frontend"
- RELEASE="$ROOT/dist-package-java/dms-server"
- TEMPLATES="$ROOT/build/java-templates"
- SKIP_FRONTEND=0
- for arg in "$@"; do
- case "$arg" in
- --skip-frontend|-SkipFrontend) SKIP_FRONTEND=1 ;;
- esac
- done
- echo "========== DMS 一键部署(Java 版) =========="
- echo "项目根目录: $ROOT"
- # ---------- 1. 前端构建 ----------
- if [ "$SKIP_FRONTEND" -eq 0 ]; then
- echo "[1/4] 构建前端..."
- (cd "$FRONTEND" && { [ -d node_modules ] || npm install; } && npm run build)
- else
- echo "[1/4] 跳过前端构建 (--skip-frontend)"
- fi
- [ -f "$FRONTEND/dist/index.html" ] || { echo "错误:前端产物不存在,请先 npm run build"; exit 1; }
- # ---------- 2. Maven 打包 ----------
- echo "[2/4] Maven 打包..."
- (cd "$BACKEND" && mvn -q clean package -Pfrontend)
- [ -f "$BACKEND/target/dms-server.jar" ] || { echo "错误:未找到打包产物 dms-server.jar"; exit 1; }
- # ---------- 3. 整理发行包 ----------
- echo "[3/4] 整理发行包..."
- rm -rf "$RELEASE"
- mkdir -p "$RELEASE"
- cp "$BACKEND/target/dms-server.jar" "$RELEASE/"
- cp "$ROOT/backend/.env.example" "$RELEASE/"
- cp "$TEMPLATES/run.bat" "$TEMPLATES/run.sh" "$TEMPLATES/upgrade-db.bat" \
- "$TEMPLATES/upgrade-db.sh" "$TEMPLATES/README.txt" "$RELEASE/"
- if [ -f "$ROOT/tools/export_full_demo_data.py" ]; then
- echo " 导出示例数据库 SQL..."
- (cd "$ROOT/backend" && python "$ROOT/tools/export_full_demo_data.py" \
- --output "$RELEASE/database-init.sql") || echo "警告:导出示例数据库 SQL 失败,跳过"
- fi
- # ---------- 4. 从备份恢复 .env 和 dms-storage ----------
- echo "[4/4] 从备份恢复 .env 和 dms-storage..."
- BAK="$ROOT/dist-package-java-bak/dms-server"
- if [ -d "$BAK" ]; then
- [ -f "$BAK/.env" ] && cp "$BAK/.env" "$RELEASE/" && echo " 已恢复 .env"
- [ -d "$BAK/dms-storage" ] && cp -r "$BAK/dms-storage" "$RELEASE/" && echo " 已恢复 dms-storage"
- else
- echo " 备份目录不存在: $BAK - 跳过恢复"
- fi
- echo "========== 部署完成(Java 版) =========="
- echo "发行包目录: $RELEASE"
|