fix: 修复Assembly打包与启动脚本JAR查找问题

- assembly.xml: 主JAR放到根目录,移除lib目录
  - Spring Boot fat jar已包含所有依赖
  - 避免依赖JAR冗余和混淆

- start.sh: 优化JAR文件查找逻辑
  - 优先查找根目录: ${APP_HOME}/${APP_NAME}.jar
  - fallback到lib目录(向后兼容)
  - 添加JAR_FILE到启动日志输出
This commit is contained in:
zhangjf 2026-02-22 20:03:29 +08:00
parent 151f780900
commit b8044c3769
2 changed files with 25 additions and 12 deletions

View File

@ -48,13 +48,13 @@
</fileSet>
</fileSets>
<dependencySets>
<!-- lib目录 - 所有依赖JAR -->
<dependencySet>
<outputDirectory>lib</outputDirectory>
<useProjectArtifact>true</useProjectArtifact>
<scope>runtime</scope>
<!-- 主JAR文件放到根目录Spring Boot fat jar已包含所有依赖 -->
<files>
<file>
<source>${project.build.directory}/${project.artifactId}.jar</source>
<outputDirectory>/</outputDirectory>
<destName>${project.artifactId}.jar</destName>
<fileMode>0644</fileMode>
</dependencySet>
</dependencySets>
</file>
</files>
</assembly>

View File

@ -36,10 +36,22 @@ if [[ -z "${INSTANCE_NAME}" ]] || [[ "${INSTANCE_NAME}" == '\${APP_NAME}' ]]; th
fi
TENANT_ID=${TENANT_ID:-""}
# 4. JAR文件路径
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/"
# 4. JAR文件路径优先查找根目录的主JAR再查找lib目录
# Spring Boot fat jar已包含所有依赖主JAR在根目录
JAR_FILE="${APP_HOME}/${APP_NAME}.jar"
if [ ! -f "$JAR_FILE" ]; then
# fallback: 查找lib目录兼容旧版打包结构
JAR_FILE=$(ls ${APP_HOME}/lib/${APP_NAME}*.jar 2>/dev/null | head -1)
fi
if [ ! -f "$JAR_FILE" ]; then
# 最后尝试: lib目录任意jar向后兼容
JAR_FILE=$(ls ${APP_HOME}/lib/*.jar 2>/dev/null | head -1)
fi
if [ -z "$JAR_FILE" ] || [ ! -f "$JAR_FILE" ]; then
echo "Error: No JAR file found for ${APP_NAME}"
echo " Searched: ${APP_HOME}/${APP_NAME}.jar"
echo " Searched: ${APP_HOME}/lib/${APP_NAME}*.jar"
echo " Searched: ${APP_HOME}/lib/*.jar"
exit 1
fi
@ -85,6 +97,7 @@ 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 " LOG_HOME: ${LOG_HOME}"
echo " JAVA_OPTS: ${JAVA_OPTS}"
if [ -n "${TENANT_ID}" ]; then