mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-10 00:40:30 +08:00
8b15445328
Former-commit-id: 1de24b7eb79676d1aba9d799a58c5a753290cf52
74 lines
3.3 KiB
Bash
Executable File
74 lines
3.3 KiB
Bash
Executable File
#!/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.jar(STORE,对拍专用)"
|
||
fi
|
||
fi
|
||
|
||
echo "OK: V1 -> deploy/v1-legacy/"
|
||
echo "OK: V2 -> deploy/v2-maven/"
|
||
ls -la "${DEPLOY}/v1-legacy/"*.jar "${DEPLOY}/v2-maven/"*.jar
|