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

View File

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