From dd8de5d96eb8131027863b9d9d2aea308a05da2b Mon Sep 17 00:00:00 2001 From: zhangjf Date: Sun, 22 Feb 2026 15:59:53 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20APP=5FNAME=E4=BB=8EJAR=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=87=AA=E5=8A=A8=E6=8E=A8=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - APP_NAME不再写在env.properties,而是从lib/*.jar自动推断 - env.properties只保留INSTANCE_NAME和TENANT_ID(多租户场景使用) - 所有脚本(start.sh/stop.sh/status.sh)统一从JAR文件获取APP_NAME - 避免打包后所有服务的env.properties都一样导致APP_NAME冲突 --- scripts/env.properties | 8 +++----- scripts/start.sh | 22 +++++++++++----------- scripts/status.sh | 8 ++++++-- scripts/stop.sh | 8 ++++++-- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/scripts/env.properties b/scripts/env.properties index 33e756d..dbd190e 100644 --- a/scripts/env.properties +++ b/scripts/env.properties @@ -4,13 +4,11 @@ # ============================================ # -------------------------------------------- -# 服务标识配置 +# 实例配置(多租户模式需要修改) # -------------------------------------------- -# 服务名称(对应JAR文件名,如fund-sys) -APP_NAME=fund-sys # 实例名称(用于区分多租户实例,如fund-sys-shared, fund-sys-vip001) -# 默认与APP_NAME相同,多租户模式下需要修改 -INSTANCE_NAME=${APP_NAME} +# 默认与JAR文件名相同,多租户模式下需要修改 +# INSTANCE_NAME=fund-sys # 租户标识(多租户模式使用,用于Nacos元数据路由) TENANT_ID= diff --git a/scripts/start.sh b/scripts/start.sh index 34710a6..959d293 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -6,33 +6,33 @@ SCRIPT_DIR=$(dirname "$(readlink -f "$0")") APP_HOME=$(dirname "$SCRIPT_DIR") -# 加载环境变量配置(优先从env.properties读取) +# 自动从lib目录下的JAR文件推断APP_NAME +JAR_FILE=$(ls ${APP_HOME}/lib/*.jar 2>/dev/null | head -1) +if [ -z "$JAR_FILE" ]; then + echo "Error: No JAR file found in ${APP_HOME}/lib/" + exit 1 +fi +APP_NAME=$(basename "$JAR_FILE" .jar) + +# 加载环境变量配置 if [ -f "${APP_HOME}/conf/env.properties" ]; then - # 读取APP_NAME和INSTANCE_NAME while IFS='=' read -r key value; do - # 跳过注释和空行 [[ "$key" =~ ^#.*$ ]] && continue [[ -z "$key" ]] && continue - # 去除前后空格 key=$(echo "$key" | xargs) value=$(echo "$value" | xargs) - # 导出环境变量 + # 跳过APP_NAME,因为已从JAR文件推断 + [[ "$key" == "APP_NAME" ]] && continue export "$key=$value" done < "${APP_HOME}/conf/env.properties" fi -# 服务名称(对应JAR文件名,从env.properties读取或从目录名推断) -APP_NAME=${APP_NAME:-$(basename "$APP_HOME")} - # 实例名称(用于区分多租户实例,默认与APP_NAME相同) INSTANCE_NAME=${INSTANCE_NAME:-${APP_NAME}} # 日志目录(使用INSTANCE_NAME区分不同实例) LOG_HOME="/datacfs/applogs/${INSTANCE_NAME}" -# JAR文件路径(使用APP_NAME找JAR) -JAR_FILE="${APP_HOME}/lib/${APP_NAME}.jar" - # PID文件路径(使用INSTANCE_NAME) PID_FILE="${APP_HOME}/${INSTANCE_NAME}.pid" diff --git a/scripts/status.sh b/scripts/status.sh index 526fae5..d99e2bf 100755 --- a/scripts/status.sh +++ b/scripts/status.sh @@ -6,6 +6,10 @@ SCRIPT_DIR=$(dirname "$(readlink -f "$0")") APP_HOME=$(dirname "$SCRIPT_DIR") +# 自动从lib目录下的JAR文件推断APP_NAME +JAR_FILE=$(ls ${APP_HOME}/lib/*.jar 2>/dev/null | head -1) +APP_NAME=$(basename "$JAR_FILE" .jar) + # 加载环境变量配置 if [ -f "${APP_HOME}/conf/env.properties" ]; then while IFS='=' read -r key value; do @@ -13,12 +17,12 @@ if [ -f "${APP_HOME}/conf/env.properties" ]; then [[ -z "$key" ]] && continue key=$(echo "$key" | xargs) value=$(echo "$value" | xargs) + [[ "$key" == "APP_NAME" ]] && continue export "$key=$value" done < "${APP_HOME}/conf/env.properties" fi -# 服务名称和实例名称 -APP_NAME=${APP_NAME:-$(basename "$APP_HOME")} +# 实例名称 INSTANCE_NAME=${INSTANCE_NAME:-${APP_NAME}} # PID文件路径 diff --git a/scripts/stop.sh b/scripts/stop.sh index 11817e0..71e4bd8 100755 --- a/scripts/stop.sh +++ b/scripts/stop.sh @@ -6,6 +6,10 @@ SCRIPT_DIR=$(dirname "$(readlink -f "$0")") APP_HOME=$(dirname "$SCRIPT_DIR") +# 自动从lib目录下的JAR文件推断APP_NAME +JAR_FILE=$(ls ${APP_HOME}/lib/*.jar 2>/dev/null | head -1) +APP_NAME=$(basename "$JAR_FILE" .jar) + # 加载环境变量配置 if [ -f "${APP_HOME}/conf/env.properties" ]; then while IFS='=' read -r key value; do @@ -13,12 +17,12 @@ if [ -f "${APP_HOME}/conf/env.properties" ]; then [[ -z "$key" ]] && continue key=$(echo "$key" | xargs) value=$(echo "$value" | xargs) + [[ "$key" == "APP_NAME" ]] && continue export "$key=$value" done < "${APP_HOME}/conf/env.properties" fi -# 服务名称和实例名称 -APP_NAME=${APP_NAME:-$(basename "$APP_HOME")} +# 实例名称 INSTANCE_NAME=${INSTANCE_NAME:-${APP_NAME}} # PID文件路径