xlcp/build.sh
tangweijie c5909c6266 feat: 添加后端和前端编译脚本及Docker配置
- 新增 build.sh 脚本用于编译后端 Java 项目和前端 Vue3 项目,并生成部署包
- 新增 docker-compose.yml 文件以配置 MySQL、Redis、后端和前端服务
- 新增 application-prod.yaml 配置文件用于后端服务
- 新增 Dockerfile 用于后端服务的容器化部署
- 新增 SQL 初始化脚本 xlcp_dev.sql
- 新增部署文档 DEPLOYMENT.md 详细描述部署流程和环境要求
2026-01-22 09:29:17 +08:00

163 lines
4.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 ""