zhangjf ae7fb43e39 feat: 添加 Maven Assembly 打包配置
- 添加 assembly.xml 定义标准部署目录结构
- 配置 pom.xml 使用 maven-assembly-plugin
- 打包输出到 deploy/worklog-api/ 目录
- 目录结构:bin/ lib/ conf/
- 更新 start.sh 脚本适配 lib/ 目录
- 添加 env.properties.example 和 service.properties.example 配置模板
- 更新 .gitignore 忽略打包输出目录
2026-02-24 17:44:59 +08:00

111 lines
3.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
# ====================================================
# 工作日志服务平台 - 应用启动脚本
# ====================================================
# 应用配置
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}"
# 配置文件加载函数
load_properties() {
local file=$1
if [ -f "${file}" ]; then
echo "加载配置文件: ${file}"
while IFS='=' read -r key value; do
# 跳过注释和空行
[[ ${key} =~ ^#.*$ ]] && continue
[[ -z ${key} ]] && continue
# 去除前后空格
key=$(echo ${key} | xargs)
value=$(echo ${value} | xargs)
# 导出环境变量
if [ -n "${key}" ] && [ -n "${value}" ]; then
export "${key}=${value}"
fi
done < "${file}"
else
echo "警告: 配置文件不存在 ${file}"
fi
}
# 1. 加载统一环境配置
load_properties "${APP_HOME}/conf/env.properties"
# 2. 加载服务个性化配置(覆盖同名参数)
load_properties "${APP_HOME}/conf/service.properties"
# JVM 配置(从环境变量读取,如果未设置则使用默认值)
JVM_XMS=${JVM_XMS:-512m}
JVM_XMX=${JVM_XMX:-1024m}
JVM_METASPACE_SIZE=${JVM_METASPACE_SIZE:-128m}
JVM_MAX_METASPACE_SIZE=${JVM_MAX_METASPACE_SIZE:-256m}
JVM_GC_TYPE=${JVM_GC_TYPE:-G1GC}
JVM_MAX_GC_PAUSE_MILLIS=${JVM_MAX_GC_PAUSE_MILLIS:-200}
JVM_OPTS="-Xms${JVM_XMS} -Xmx${JVM_XMX} -XX:MetaspaceSize=${JVM_METASPACE_SIZE} -XX:MaxMetaspaceSize=${JVM_MAX_METASPACE_SIZE}"
JVM_OPTS="${JVM_OPTS} -XX:+Use${JVM_GC_TYPE} -XX:MaxGCPauseMillis=${JVM_MAX_GC_PAUSE_MILLIS}"
JVM_OPTS="${JVM_OPTS} -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${APP_HOME}/logs/heapdump.hprof"
JVM_OPTS="${JVM_OPTS} -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${APP_HOME}/logs/gc.log"
# Spring Boot 配置(从环境变量读取)
SPRING_PROFILE=${SPRING_PROFILES_ACTIVE:-prod}
SPRING_OPTS="--spring.profiles.active=${SPRING_PROFILE}"
# 日志文件
LOG_DIR="${APP_HOME}/logs"
CONSOLE_LOG="${LOG_DIR}/console.log"
PID_FILE="${APP_HOME}/${APP_NAME}.pid"
# 创建日志目录
mkdir -p "${LOG_DIR}"
# 检查应用是否已运行
if [ -f "${PID_FILE}" ]; then
PID=$(cat "${PID_FILE}")
if ps -p ${PID} > /dev/null 2>&1; then
echo "应用已在运行中PID: ${PID}"
exit 1
else
echo "发现残留 PID 文件,正在清理..."
rm -f "${PID_FILE}"
fi
fi
# 检查 JAR 文件是否存在
if [ ! -f "${APP_JAR_PATH}" ]; then
echo "ERROR: 找不到应用 JAR 文件: ${APP_JAR_PATH}"
exit 1
fi
# 启动应用
echo "========================================="
echo "启动应用: ${APP_NAME}"
echo "JAR 文件: ${APP_JAR_PATH}"
echo "========================================="
nohup java ${JVM_OPTS} -jar "${APP_JAR_PATH}" ${SPRING_OPTS} \
> "${CONSOLE_LOG}" 2>&1 &
PID=$!
echo ${PID} > "${PID_FILE}"
echo "应用启动中PID: ${PID}"
echo "日志文件: ${CONSOLE_LOG}"
# 等待应用启动
sleep 5
# 检查应用是否启动成功
if ps -p ${PID} > /dev/null 2>&1; then
echo "应用启动成功!"
echo "查看日志: tail -f ${CONSOLE_LOG}"
exit 0
else
echo "ERROR: 应用启动失败,请查看日志"
rm -f "${PID_FILE}"
exit 1
fi