Files
starRiverProperty/maven-cw-elevator-application/deploy/sync-jars.sh
反编译工作区 8b15445328 feat: add service config templates and extraction script
Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
2026-05-01 19:38:01 +08:00

74 lines
3.3 KiB
Bash
Executable File
Raw Permalink 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.
#!/usr/bin/env bash
# 将 V1 / V2 JAR 复制到与各目录 application.properties 同路径,便于 java -jar 启动。
#
# 可选:PARITY_PATCH_V1_DATA=1 时,在复制 V1 fat-jar 后,用当前 Maven 构建的
# cw-elevator-application-data 模块 JAR **覆盖** fat-jar 内 lib/cw-elevator-application-data-1.0-SNAPSHOT.jar
#(文件名不变,仅替换字节码)。用于 V1/V2 对拍:消除历史运行包内嵌 data 层与源码分支分叉导致的
# ShardingSphere「no table route」等非业务差异。手工比对「纯正历史 V1」时请 unset 或设为 0。
set -euo pipefail
DEPLOY="$(cd "$(dirname "$0")" && pwd)"
MAVEN="$(cd "$DEPLOY/.." && pwd)"
REPO="$(cd "$MAVEN/.." && pwd)"
V1_SRC="${REPO}/cw-elevator-application-V1.0.0.20211103/cw-elevator-application-V1.0.0.20211103.jar"
V2_VER="${V2_VER:-2.0.7}"
V2_JAR_NAME="cw-elevator-application-${V2_VER}.jar"
V2_TGT="${MAVEN}/cw-elevator-application-starter/target/${V2_JAR_NAME}"
# 发布目录命名:cw-elevator-application-V<版本>.<YYYYMMDD>/(与 V1 运行包风格一致)
V2_BUNDLE="$(ls -1dt "${MAVEN}/releases"/cw-elevator-application-V"${V2_VER}".* 2>/dev/null | head -1 || true)"
V2_REL=""
if [[ -n "${V2_BUNDLE}" ]]; then
V2_REL="${V2_BUNDLE}/${V2_JAR_NAME}"
fi
if [[ -z "${V2_REL}" || ! -f "${V2_REL}" ]]; then
V2_LEGACY="${MAVEN}/releases/v${V2_VER}/${V2_JAR_NAME}"
if [[ -f "${V2_LEGACY}" ]]; then
V2_REL="${V2_LEGACY}"
fi
fi
PATCH_V1_DATA="${PARITY_PATCH_V1_DATA:-0}"
DATA_NEW="${MAVEN}/cw-elevator-application-data/target/cw-elevator-application-data-2.0-SNAPSHOT.jar"
if [[ ! -f "$V1_SRC" ]]; then
echo "ERROR: 未找到 V1 JAR: $V1_SRC" >&2
exit 1
fi
# 优先 target:本地 mvn package 后应与 deploy 同步,避免 releases 里旧包盖住新构建。
V2_SRC=""
if [[ -f "$V2_TGT" ]]; then
V2_SRC="$V2_TGT"
elif [[ -f "$V2_REL" ]]; then
V2_SRC="$V2_REL"
else
echo "ERROR: 未找到 V2 JAR(请先 mvn package,或运行 scripts/release-cw-elevator-application.sh ${V2_VER}:" >&2
echo " ${V2_TGT}" >&2
echo " 或 releases/cw-elevator-application-V${V2_VER}.<日期>/${V2_JAR_NAME}" >&2
exit 1
fi
install -m0644 "$V1_SRC" "${DEPLOY}/v1-legacy/cw-elevator-application-V1.0.0.20211103.jar"
install -m0644 "$V2_SRC" "${DEPLOY}/v2-maven/${V2_JAR_NAME}"
V1_OUT="${DEPLOY}/v1-legacy/cw-elevator-application-V1.0.0.20211103.jar"
if [[ "$PATCH_V1_DATA" == "1" ]]; then
if [[ ! -f "$DATA_NEW" ]]; then
echo "WARN: PARITY_PATCH_V1_DATA=1 但未找到 Maven data 模块产物,跳过覆盖: $DATA_NEW" >&2
else
# Spring Boot 可执行 fat-jar 要求 lib/*.jar 以 ZIP STORED(无压缩)存放;jar uf 会压缩嵌套 JAR,
# 导致 JarLauncher 报错「nested jar files must be stored without compression」。
TMPDIR="$(mktemp -d)"
mkdir -p "${TMPDIR}/lib"
cp -f "$DATA_NEW" "${TMPDIR}/lib/cw-elevator-application-data-1.0-SNAPSHOT.jar"
zip -d "$V1_OUT" "lib/cw-elevator-application-data-1.0-SNAPSHOT.jar" 2>/dev/null || true
(cd "$TMPDIR" && zip -q -0 "$V1_OUT" lib/cw-elevator-application-data-1.0-SNAPSHOT.jar)
rm -rf "$TMPDIR"
echo "OK: 已用当前构建 data 模块覆盖 V1 fat-jar 内 lib/cw-elevator-application-data-1.0-SNAPSHOT.jarSTORE,对拍专用)"
fi
fi
echo "OK: V1 -> deploy/v1-legacy/"
echo "OK: V2 -> deploy/v2-maven/"
ls -la "${DEPLOY}/v1-legacy/"*.jar "${DEPLOY}/v2-maven/"*.jar