- 新增 deploy/ 目录包含 Docker 部署配置、数据库脚本、部署脚本 - 更新 .gitignore 忽略 deploy 构建产物 - 添加 AGENTS.md AI Agent 指南 - 添加项目构建脚本 build.sh
163 lines
4.3 KiB
Bash
163 lines
4.3 KiB
Bash
#!/bin/bash
|
||
|
||
# ============================================
|
||
# XL监狱综合管理平台 - 前后端编译脚本
|
||
# ============================================
|
||
# 功能:
|
||
# 1. 编译后端 Java 项目
|
||
# 2. 编译前端 Vue3 项目
|
||
# 3. 生成部署包
|
||
#
|
||
# 使用方法:
|
||
# 1. 修改下面的配置(可选)
|
||
# 2. 执行: bash build.sh
|
||
#
|
||
# 依赖:
|
||
# - Maven 3.8+
|
||
# - Node.js 16+
|
||
# - pnpm
|
||
# ============================================
|
||
|
||
# 配置
|
||
PROJECT_DIR="/Volumes/Dpan/github/xlcp"
|
||
BACKEND_DIR="${PROJECT_DIR}/backend"
|
||
FRONTEND_DIR="${PROJECT_DIR}/frontend"
|
||
BACKEND_OUTPUT_DIR="${PROJECT_DIR}/deploy/backend"
|
||
FRONTEND_OUTPUT_DIR="${PROJECT_DIR}/deploy/frontend"
|
||
|
||
# Maven 配置
|
||
MAVEN_PROFILE="prod"
|
||
JAVA_VERSION="17"
|
||
|
||
# 颜色输出
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo -e "${GREEN}XL监狱综合管理平台 - 前后端编译脚本${NC}"
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo ""
|
||
|
||
# 检查依赖
|
||
echo -e "${BLUE}📋 检查编译环境...${NC}"
|
||
|
||
# 检查 Maven
|
||
if ! command -v mvn &> /dev/null; then
|
||
echo -e "${RED}❌ 错误: 未找到 Maven,请先安装 Maven${NC}"
|
||
exit 1
|
||
fi
|
||
echo -e "${GREEN}✅ Maven 版本: $(mvn -version | head -1)${NC}"
|
||
|
||
# 检查 Node.js
|
||
if ! command -v node &> /dev/null; then
|
||
echo -e "${RED}❌ 错误: 未找到 Node.js,请先安装 Node.js${NC}"
|
||
exit 1
|
||
fi
|
||
echo -e "${GREEN}✅ Node.js 版本: $(node -v)${NC}"
|
||
|
||
# 检查 pnpm
|
||
if ! command -v pnpm &> /dev/null; then
|
||
echo -e "${YELLOW}⚠️ 未找到 pnpm,尝试使用 npm...${NC}"
|
||
PACKAGE_MANAGER="npm"
|
||
else
|
||
echo -e "${GREEN}✅ pnpm 版本: $(pnpm -v)${NC}"
|
||
PACKAGE_MANAGER="pnpm"
|
||
fi
|
||
|
||
echo ""
|
||
echo -e "${GREEN}开始编译...${NC}"
|
||
echo ""
|
||
|
||
# ============================================
|
||
# 第一部分:编译后端
|
||
# ============================================
|
||
echo -e "${BLUE}🏗️ 编译后端项目...${NC}"
|
||
echo ""
|
||
|
||
cd "${BACKEND_DIR}"
|
||
|
||
# 清理并编译
|
||
echo -e "${YELLOW}📦 清理并编译后端...${NC}"
|
||
mvn clean package -DskipTests -Dmaven.javadoc.skip=true -q
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}✅ 后端编译成功!${NC}"
|
||
|
||
# 查找生成的 JAR 文件
|
||
JAR_FILE=$(find "${BACKEND_DIR}/yudao-server/target" -name "yudao-server-*.jar" 2>/dev/null | head -1)
|
||
if [ -n "$JAR_FILE" ]; then
|
||
echo -e "${GREEN}📁 生成的 JAR 文件: ${JAR_FILE}${NC}"
|
||
|
||
# 复制到部署目录
|
||
mkdir -p "${BACKEND_OUTPUT_DIR}"
|
||
cp "${JAR_FILE}" "${BACKEND_OUTPUT_DIR}/"
|
||
echo -e "${GREEN}📁 已复制到部署目录: ${BACKEND_OUTPUT_DIR}/$(basename $JAR_FILE)${NC}"
|
||
fi
|
||
else
|
||
echo -e "${RED}❌ 后端编译失败!${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# ============================================
|
||
# 第二部分:编译前端
|
||
# ============================================
|
||
echo -e "${BLUE}🎨 编译前端项目...${NC}"
|
||
echo ""
|
||
|
||
cd "${FRONTEND_DIR}"
|
||
|
||
# 检查依赖是否已安装
|
||
if [ ! -d "node_modules" ]; then
|
||
echo -e "${YELLOW}📥 安装前端依赖...${NC}"
|
||
$PACKAGE_MANAGER install
|
||
if [ $? -ne 0 ]; then
|
||
echo -e "${RED}❌ 前端依赖安装失败!${NC}"
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# 清理并编译生产版本
|
||
echo -e "${YELLOW}📦 编译前端生产版本...${NC}"
|
||
$PACKAGE_MANAGER build:prod
|
||
|
||
if [ $? -eq 0 ]; then
|
||
echo -e "${GREEN}✅ 前端编译成功!${NC}"
|
||
|
||
# 复制到部署目录
|
||
mkdir -p "${FRONTEND_OUTPUT_DIR}"
|
||
|
||
# 复制编译产物
|
||
if [ -d "dist" ]; then
|
||
rm -rf "${FRONTEND_OUTPUT_DIR}/dist"
|
||
cp -r "dist" "${FRONTEND_OUTPUT_DIR}/"
|
||
echo -e "${GREEN}📁 已复制到部署目录: ${FRONTEND_OUTPUT_DIR}/dist${NC}"
|
||
fi
|
||
else
|
||
echo -e "${RED}❌ 前端编译失败!${NC}"
|
||
exit 1
|
||
fi
|
||
|
||
echo ""
|
||
|
||
# ============================================
|
||
# 完成
|
||
# ============================================
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo -e "${GREEN}🎉 编译完成!${NC}"
|
||
echo -e "${GREEN}========================================${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}部署文件位置:${NC}"
|
||
echo -e " - 后端: ${BACKEND_OUTPUT_DIR}/"
|
||
echo -e " - 前端: ${FRONTEND_OUTPUT_DIR}/dist/"
|
||
echo ""
|
||
echo -e "${YELLOW}下一步:${NC}"
|
||
echo -e " 1. 部署后端 JAR 文件"
|
||
echo -e " 2. 部署前端静态文件"
|
||
echo -e " 3. 配置 Nginx"
|
||
echo ""
|