From 2184dce6a8fd3436fffb695e5d574b9c02cfaddd Mon Sep 17 00:00:00 2001 From: zhangjf Date: Sun, 22 Feb 2026 20:30:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E6=89=93?= =?UTF-8?q?=E5=8C=85=E7=BB=93=E6=9E=84=EF=BC=8C=E4=B8=BBJAR=E6=94=BE?= =?UTF-8?q?=E5=85=A5lib=E7=9B=AE=E5=BD=95=E5=B9=B6=E5=B8=A6=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - pom.xml: 移除finalName配置,JAR保留版本号 - assembly.xml: 主JAR放入lib目录(useProjectArtifact=true) - start.sh: 简化启动逻辑 - ClassPath统一为 lib/* - 无需单独匹配主JAR文件名 - 只需配置MAIN_CLASS即可启动 优势: - 主JAR带版本号便于版本识别和升级 - 所有JAR统一放lib目录,结构清晰 - 启动脚本更简洁,无需APP_NAME匹配JAR --- assembly/assembly.xml | 14 ++------------ pom.xml | 2 -- scripts/start.sh | 41 +++++++++++------------------------------ 3 files changed, 13 insertions(+), 44 deletions(-) diff --git a/assembly/assembly.xml b/assembly/assembly.xml index 45f13a7..fc16e92 100644 --- a/assembly/assembly.xml +++ b/assembly/assembly.xml @@ -48,21 +48,11 @@ - - - - ${project.build.directory}/${project.artifactId}.jar - / - ${project.artifactId}.jar - 0644 - - - - + lib - false + true runtime 0644 diff --git a/pom.xml b/pom.xml index 3b5d4f8..e2eea29 100644 --- a/pom.xml +++ b/pom.xml @@ -105,8 +105,6 @@ - - ${project.artifactId} diff --git a/scripts/start.sh b/scripts/start.sh index 71414e2..faef310 100755 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -36,36 +36,24 @@ if [[ -z "${INSTANCE_NAME}" ]] || [[ "${INSTANCE_NAME}" == '\${APP_NAME}' ]]; th fi TENANT_ID=${TENANT_ID:-""} -# 4. 主JAR文件路径 -JAR_FILE="${APP_HOME}/${APP_NAME}.jar" -if [ ! -f "$JAR_FILE" ]; then - echo "Error: No JAR file found: ${JAR_FILE}" - exit 1 -fi - -# 5. 主类(从service.properties读取,或使用默认值) +# 4. 主类(从service.properties读取,必须配置) MAIN_CLASS=${MAIN_CLASS:-""} if [ -z "$MAIN_CLASS" ]; then echo "Error: MAIN_CLASS not configured in service.properties" exit 1 fi -# 6. 构建ClassPath(lib目录所有jar + 主jar) -# 检查lib目录是否存在 -if [ -d "${APP_HOME}/lib" ]; then - # 构建classpath: lib/* + 主JAR - CLASSPATH="${APP_HOME}/lib/*:${JAR_FILE}" - LAUNCH_MODE="classpath" -else - # fallback: fat jar模式(向后兼容) - CLASSPATH="${JAR_FILE}" - LAUNCH_MODE="fatjar" +# 5. ClassPath(lib目录所有jar,包括主JAR和依赖) +if [ ! -d "${APP_HOME}/lib" ]; then + echo "Error: lib directory not found: ${APP_HOME}/lib" + exit 1 fi +CLASSPATH="${APP_HOME}/lib/*" -# 7. 日志目录(使用INSTANCE_NAME区分不同实例) +# 6. 日志目录(使用INSTANCE_NAME区分不同实例) LOG_HOME="/datacfs/applogs/${INSTANCE_NAME}" -# 8. PID文件路径 +# 7. PID文件路径 PID_FILE="${APP_HOME}/${INSTANCE_NAME}.pid" # JVM参数(可通过环境变量覆盖) @@ -104,23 +92,16 @@ echo "Starting ${INSTANCE_NAME}..." echo " APP_NAME: ${APP_NAME}" echo " INSTANCE_NAME: ${INSTANCE_NAME}" echo " APP_HOME: ${APP_HOME}" -echo " JAR_FILE: ${JAR_FILE}" echo " MAIN_CLASS: ${MAIN_CLASS}" -echo " LAUNCH_MODE: ${LAUNCH_MODE}" +echo " CLASSPATH: ${CLASSPATH}" echo " LOG_HOME: ${LOG_HOME}" echo " JAVA_OPTS: ${JAVA_OPTS}" if [ -n "${TENANT_ID}" ]; then echo " TENANT_ID: ${TENANT_ID}" fi -# 根据启动模式选择启动方式 -if [ "$LAUNCH_MODE" == "classpath" ]; then - # ClassPath模式:java -cp lib/*:app.jar MainClass - nohup java $JAVA_OPTS $LOG_OPTS $TENANT_OPTS -cp "$CLASSPATH" $MAIN_CLASS $CONFIG_OPTS > /dev/null 2>&1 & -else - # FatJar模式:java -jar app.jar(向后兼容) - nohup java $JAVA_OPTS $LOG_OPTS $TENANT_OPTS -jar $JAR_FILE $CONFIG_OPTS > /dev/null 2>&1 & -fi +# 启动命令:java -cp lib/* MainClass +nohup java $JAVA_OPTS $LOG_OPTS $TENANT_OPTS -cp "$CLASSPATH" $MAIN_CLASS $CONFIG_OPTS > /dev/null 2>&1 & # 保存PID echo $! > $PID_FILE