refactor: 重构项目目录结构和打包配置

1. 配置文件不包含 *example 文件
2. scripts 目录迁移到项目根目录
3. env.properties 迁移到 scripts 目录
4. MAIN_CLASS 参数迁移到 service.properties
5. assembly.xml 更新脚本和配置文件路径
6. 添加前端打包脚本:
   - build-web.sh: 管理后台打包
   - build-mobile.sh: 移动端H5打包
   - build-all.sh: 全量打包
7. 更新 .gitignore 忽略配置
This commit is contained in:
zhangjf 2026-02-24 18:28:04 +08:00
parent d627b19976
commit 814265d88e
14 changed files with 230 additions and 94 deletions

6
.gitignore vendored
View File

@ -49,8 +49,8 @@ application-prod.yml
bootstrap.yml
# 实际配置文件(敏感信息,仅模板提交)
src/main/resources/env.properties
src/main/resources/service.properties
scripts/env.properties
worklog-api/src/main/resources/service.properties
# 数据库备份
*.sql.backup
@ -59,6 +59,8 @@ db_backup/
# ==================== Assembly 打包输出 ====================
deploy/worklog-api/
deploy/worklog-api.tar.gz
deploy/worklog-web/
deploy/worklog-mobile/
# ==================== 上传文件 ====================
uploads/

81
scripts/build-all.sh Executable file
View File

@ -0,0 +1,81 @@
#!/bin/bash
# ====================================================
# 工作日志服务平台 - 全量打包脚本
# ====================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
DEPLOY_DIR="${PROJECT_ROOT}/deploy"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}=========================================${NC}"
echo -e "${BLUE}工作日志服务平台 - 全量打包${NC}"
echo -e "${BLUE}=========================================${NC}"
# 清理 deploy 目录下的旧构建产物
echo -e "${YELLOW}清理旧构建产物...${NC}"
rm -rf ${DEPLOY_DIR}/worklog-api
rm -rf ${DEPLOY_DIR}/worklog-api.tar.gz
rm -rf ${DEPLOY_DIR}/worklog-web
rm -rf ${DEPLOY_DIR}/worklog-mobile
# 1. 打包后端 API
echo ""
echo -e "${GREEN}[1/3] 打包后端 API...${NC}"
cd "${PROJECT_ROOT}/worklog-api"
mvn clean package -DskipTests -q
# 检查后端打包结果
if [ ! -f "${DEPLOY_DIR}/worklog-api.tar.gz" ]; then
echo -e "${RED}ERROR: 后端打包失败${NC}"
exit 1
fi
API_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-api.tar.gz | cut -f1)
echo -e "${GREEN}后端打包完成: ${API_SIZE}${NC}"
# 2. 打包管理后台前端
echo ""
echo -e "${GREEN}[2/3] 打包管理后台前端...${NC}"
"${SCRIPT_DIR}/build-web.sh"
# 部署到 deploy 目录
mkdir -p ${DEPLOY_DIR}/worklog-web
cp -r ${PROJECT_ROOT}/worklog-web/dist/* ${DEPLOY_DIR}/worklog-web/
WEB_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-web | cut -f1)
echo -e "${GREEN}管理后台打包完成: ${WEB_SIZE}${NC}"
# 3. 打包移动端 H5
echo ""
echo -e "${GREEN}[3/3] 打包移动端H5前端...${NC}"
"${SCRIPT_DIR}/build-mobile.sh"
# 部署到 deploy 目录
mkdir -p ${DEPLOY_DIR}/worklog-mobile
cp -r ${PROJECT_ROOT}/worklog-mobile/dist/* ${DEPLOY_DIR}/worklog-mobile/
MOBILE_SIZE=$(du -sh ${DEPLOY_DIR}/worklog-mobile | cut -f1)
echo -e "${GREEN}移动端H5打包完成: ${MOBILE_SIZE}${NC}"
# 输出汇总
echo ""
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}全量打包完成!${NC}"
echo -e "${GREEN}=========================================${NC}"
echo -e "输出目录: ${DEPLOY_DIR}/"
echo ""
echo -e "产物列表:"
echo -e " - worklog-api.tar.gz (${API_SIZE})"
echo -e " - worklog-web/ (${WEB_SIZE})"
echo -e " - worklog-mobile/ (${MOBILE_SIZE})"
echo ""
echo -e "部署命令示例:"
echo -e " scp ${DEPLOY_DIR}/worklog-api.tar.gz user@server:/opt/worklog/"
echo -e " scp -r ${DEPLOY_DIR}/worklog-web user@server:/opt/worklog/"
echo -e " scp -r ${DEPLOY_DIR}/worklog-mobile user@server:/opt/worklog/"

63
scripts/build-mobile.sh Executable file
View File

@ -0,0 +1,63 @@
#!/bin/bash
# ====================================================
# 工作日志服务平台 - 移动端H5前端打包脚本
# ====================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
MOBILE_DIR="${PROJECT_ROOT}/worklog-mobile"
DEPLOY_DIR="${PROJECT_ROOT}/deploy"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}打包移动端H5前端 (worklog-mobile)${NC}"
echo -e "${GREEN}=========================================${NC}"
# 检查项目目录
if [ ! -d "${MOBILE_DIR}" ]; then
echo -e "${RED}ERROR: 找不到项目目录 ${MOBILE_DIR}${NC}"
exit 1
fi
cd "${MOBILE_DIR}"
# 检查 node_modules
if [ ! -d "node_modules" ]; then
echo -e "${YELLOW}安装依赖...${NC}"
npm install
fi
# 清理旧的构建产物
echo -e "${YELLOW}清理旧的构建产物...${NC}"
rm -rf dist
# 构建
echo -e "${YELLOW}构建生产版本...${NC}"
npm run build
# 检查构建结果
if [ ! -d "dist" ]; then
echo -e "${RED}ERROR: 构建失败,找不到 dist 目录${NC}"
exit 1
fi
# 计算 dist 目录大小
DIST_SIZE=$(du -sh dist | cut -f1)
DIST_FILES=$(find dist -type f | wc -l)
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}构建完成!${NC}"
echo -e "${GREEN}=========================================${NC}"
echo -e "输出目录: ${MOBILE_DIR}/dist"
echo -e "总大小: ${DIST_SIZE}"
echo -e "文件数量: ${DIST_FILES}"
echo ""
echo -e "部署目录: ${DEPLOY_DIR}/worklog-mobile/"
echo -e "部署命令: cp -r dist/* ${DEPLOY_DIR}/worklog-mobile/"

63
scripts/build-web.sh Executable file
View File

@ -0,0 +1,63 @@
#!/bin/bash
# ====================================================
# 工作日志服务平台 - 管理后台前端打包脚本
# ====================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
WEB_DIR="${PROJECT_ROOT}/worklog-web"
DEPLOY_DIR="${PROJECT_ROOT}/deploy"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}打包管理后台前端 (worklog-web)${NC}"
echo -e "${GREEN}=========================================${NC}"
# 检查项目目录
if [ ! -d "${WEB_DIR}" ]; then
echo -e "${RED}ERROR: 找不到项目目录 ${WEB_DIR}${NC}"
exit 1
fi
cd "${WEB_DIR}"
# 检查 node_modules
if [ ! -d "node_modules" ]; then
echo -e "${YELLOW}安装依赖...${NC}"
npm install
fi
# 清理旧的构建产物
echo -e "${YELLOW}清理旧的构建产物...${NC}"
rm -rf dist
# 构建
echo -e "${YELLOW}构建生产版本...${NC}"
npm run build
# 检查构建结果
if [ ! -d "dist" ]; then
echo -e "${RED}ERROR: 构建失败,找不到 dist 目录${NC}"
exit 1
fi
# 计算 dist 目录大小
DIST_SIZE=$(du -sh dist | cut -f1)
DIST_FILES=$(find dist -type f | wc -l)
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}构建完成!${NC}"
echo -e "${GREEN}=========================================${NC}"
echo -e "输出目录: ${WEB_DIR}/dist"
echo -e "总大小: ${DIST_SIZE}"
echo -e "文件数量: ${DIST_FILES}"
echo ""
echo -e "部署目录: ${DEPLOY_DIR}/worklog-web/"
echo -e "部署命令: cp -r dist/* ${DEPLOY_DIR}/worklog-web/"

View File

@ -8,7 +8,6 @@ APP_NAME="worklog-api"
APP_JAR="worklog-api-1.0.0.jar"
APP_HOME="/opt/worklog/${APP_NAME}"
APP_JAR_PATH="${APP_HOME}/lib/${APP_JAR}"
MAIN_CLASS="com.wjbl.worklog.WorklogApplication"
# Classpath 配置lib 目录下所有 JAR + conf 目录)
CLASSPATH="${APP_HOME}/lib/*:${APP_HOME}/conf"
@ -41,6 +40,9 @@ load_properties "${APP_HOME}/conf/env.properties"
# 2. 加载服务个性化配置(覆盖同名参数)
load_properties "${APP_HOME}/conf/service.properties"
# 主启动类(从 service.properties 读取,默认值)
MAIN_CLASS=${MAIN_CLASS:-com.wjbl.worklog.WorklogApplication}
# JVM 配置(从环境变量读取,如果未设置则使用默认值)
JVM_XMS=${JVM_XMS:-512m}
JVM_XMX=${JVM_XMX:-1024m}

View File

@ -31,7 +31,7 @@
<!-- 启动脚本输出到 bin 目录 -->
<fileSet>
<directory>${project.basedir}/../deploy/scripts</directory>
<directory>${project.basedir}/../scripts</directory>
<outputDirectory>bin</outputDirectory>
<includes>
<include>start.sh</include>
@ -43,17 +43,24 @@
<lineEnding>unix</lineEnding>
</fileSet>
<!-- 配置文件输出到 conf 目录 -->
<!-- 环境配置文件(从 scripts 目录) -->
<fileSet>
<directory>${project.basedir}/../scripts</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>env.properties</include>
</includes>
</fileSet>
<!-- 应用配置文件(从 resources 目录,不包含 example 文件) -->
<fileSet>
<directory>${project.basedir}/src/main/resources</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>application.yml</include>
<include>application.yml.example</include>
<include>bootstrap.yml</include>
<include>logback-spring.xml</include>
<include>env.properties.example</include>
<include>service.properties.example</include>
<include>service.properties</include>
</includes>
</fileSet>
</fileSets>

View File

@ -1,86 +0,0 @@
# ====================================================
# 工作日志服务平台 - 统一环境配置
# 说明:所有服务共用的环境配置,包括数据库、缓存、注册中心等
# ====================================================
# ==================== 数据库配置 ====================
DB_HOST=localhost
DB_PORT=3306
DB_NAME=worklog
DB_USERNAME=worklog
DB_PASSWORD=Wlog@123
DB_URL=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8mb4&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
# 连接池配置
DB_POOL_MIN_IDLE=5
DB_POOL_MAX_SIZE=20
DB_POOL_CONNECTION_TIMEOUT=30000
DB_POOL_IDLE_TIMEOUT=600000
DB_POOL_MAX_LIFETIME=1800000
# ==================== Redis 配置 ====================
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=zjf@123456
REDIS_DATABASE=0
REDIS_TIMEOUT=5000
# Redis 连接池配置
REDIS_POOL_MAX_ACTIVE=8
REDIS_POOL_MAX_WAIT=-1
REDIS_POOL_MAX_IDLE=8
REDIS_POOL_MIN_IDLE=0
# ==================== Nacos 配置 ====================
NACOS_SERVER_ADDR=localhost:8848
NACOS_NAMESPACE=worklog-dev
NACOS_GROUP=DEFAULT_GROUP
NACOS_USERNAME=nacos
NACOS_PASSWORD=nacos
# ==================== 文件上传配置 ====================
FILE_UPLOAD_MAX_SIZE=50MB
FILE_UPLOAD_MAX_REQUEST_SIZE=100MB
FILE_STORAGE_PATH=./uploads
# ==================== 腾讯云 COS 配置 ====================
COS_ENABLED=false
COS_APP_ID=1308258046
COS_SECRET_ID=AKIDukKfkY5LK2SbU6QTM7csugCSSDjzyiDS
COS_SECRET_KEY=0lHXYIn20jDRP7ZlhNnyub3GEwObZHjw
COS_BUCKET_NAME=test-1308258046
COS_BUCKET_HOST=https://test-1308258046.cos.ap-beijing.myqcloud.com
COS_REGION=ap-beijing
# ==================== 日志配置 ====================
# 日志路径(扁平目录结构,无子目录)
LOG_PATH=./logs
# 日志级别
LOG_LEVEL_ROOT=INFO
LOG_LEVEL_APP=DEBUG
# 日志文件配置
LOG_FILE_MAX_SIZE=100MB
LOG_FILE_MAX_HISTORY=30
# ==================== JVM 配置 ====================
JVM_XMS=512m
JVM_XMX=1024m
JVM_METASPACE_SIZE=128m
JVM_MAX_METASPACE_SIZE=256m
# GC 配置
JVM_GC_TYPE=G1GC
JVM_MAX_GC_PAUSE_MILLIS=200
# ==================== 业务配置 ====================
# Token 配置
TOKEN_EXPIRE_TIME=86400
TOKEN_PREFIX=auth:token:
# 日志内容限制
WORKLOG_MAX_CONTENT_LENGTH=2000
# 允许的上传文件扩展名
UPLOAD_ALLOWED_EXTENSIONS=jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx

View File

@ -13,6 +13,10 @@ INSTANCE_NAME=${APP_NAME}
# 租户标识(多租户场景使用,用于路由,单租户留空)
TENANT_ID=
# ==================== 服务启动配置 ====================
# 主启动类瘦JAR模式必须配置
MAIN_CLASS=com.wjbl.worklog.WorklogApplication
# ==================== 服务端口配置 ====================
# 服务端口(可覆盖 application.yml 中配置)
SERVER_PORT=8080