Initial commit: reorganized source tree

- backend/: 13 Maven modules (cw-elevator-application, cloudwalk-cloud, intelligent-cwoscomponent, ninca-crk, etc.)
- frontend/: 4 Vue projects (elevator-front, cwos-portal, alarm-front, front_acs) + decompiled + scripts
- scripts/: build, test-env, tools (Docker Compose, service templates, API parity)
- docs/: AGENTS.md, superpowers specs, architecture docs
- .gitignore: standard Java/Maven exclusions

Moved from legacy maven-*/ root layout to backend/ organized structure.
This commit is contained in:
hpd840321
2026-05-09 09:00:12 +08:00
commit 7b2bd307f1
7260 changed files with 612980 additions and 0 deletions
+335
View File
@@ -0,0 +1,335 @@
#!/usr/bin/env bash
# 仅编译本仓库(maven-cw-elevator-application),依赖从 Nexus 拉取,避免使用全局 ~/.m2 里
# 其它反编译工程 mvn install 产生的同坐标覆盖。
#
# 方案要点:
# - 使用独立 maven.repo.local(默认:仓库根目录下 .m2-elevator-nexus-only),与 ~/.m2 隔离。
# - Nexus 常缺聚合父 POM cloudwalk-cloud-common:脚本会(1)尝试从全局 ~/.m2 复制该目录;
# (2)若仍缺,且存在相邻仓库 maven-cloudwalk-legacy-public/cloudwalk-cloud-common,则自动
# mvn -N install 到隔离库(仅父 POM,不编其它反编译模块)。
# - 私服上 cloudwalk-common-web 等 POM 若传递依赖不完整,隔离构建会缺 spring-boot / commons-lang
# 等编译包。可选(3)从全局 ~/.m2 复制 cloudwalk-common-* 同版本目录(与 Nexus 二选一:先复制则优先用本地该目录)。
# - Nexus 常缺 SNAPSHOT 父 POMcwos / davinci)及 cloudwalk-device-sdk 父 POM:若相邻仓库存在对应 pom.xml,则自动 mvn -N install
# 到隔离库:maven-cwos-resource 的 cwos-component-resource、cwos-portalmaven-cloudwalk-intelligent-davinci-manager 根 POM
# maven-cloudwalk-device-sdk 根 POM(供 intelligent-cwoscomponent-interface 解析 protocol-entity)。
# ELEVATOR_AUTO_INSTALL_LEGACY_SNAPSHOT_PARENTS=0 跳过上述「相邻父 POM install」整段。
# - intelligent-cwoscomponent 固定为 2.9.2-xinghewan(与 cw_lib 一致,禁止 3.0.0):可先 ELEVATOR_BOOTSTRAP_INTELLIGENT_CWOSCOMPONENT_FROM_GLOBAL
# 从 ~/.m2 复制 parentartifactId intelligent-cwoscomponent/ interface / rest;若仍缺 JAR,则对
# cw-elevator-application-V1.0.0.20211103/cw_lib 内同名 jar+pom 执行 install-file,并先安装 scripts/legacy-poms 下父 POM 桩。
# ELEVATOR_AUTO_INSTALL_INTELLIGENT_CWOSCOMPONENT=0 跳过 installELEVATOR_CW_LIB_DIR 覆盖 cw_lib 路径。
# - cwos-sdk-event(默认 1.5.0-SNAPSHOT):ELEVATOR_BOOTSTRAP_CWOS_SDK_EVENT_FROM_GLOBAL 从 ~/.m2 复制;缺 JAR 时对
# maven-cloudwalk-legacy-public/cwos-sdk-event mvn install。ELEVATOR_AUTO_INSTALL_CWOS_SDK_EVENT=0 跳过 install。
# - ELEVATOR_BOOTSTRAP_FROM_GLOBAL_M2=0 跳过(1);ELEVATOR_AUTO_INSTALL_LEGACY_PARENT=0 跳过(2);
# ELEVATOR_BOOTSTRAP_CLOUDWALK_MODULES_FROM_GLOBAL=0 跳过(3)(坚持纯 Nexus 时用)。
#
# 用法:
# ./scripts/build_nexus_only.sh
# ELEVATOR_M2_REPO=/path/to/custom-repo ./scripts/build_nexus_only.sh
# ELEVATOR_SYNC_DEPLOY=1 ./scripts/build_nexus_only.sh # 另同步 V1/V2 到 deploy/v1-legacy 与 deploy/v2-maven
# - 编译成功后默认将 starter fat jar 安装到 deploy/v2-maven/(覆盖 cw-elevator-application-2.0.0.jar)。
# ELEVATOR_DEPLOY_V2_MAVEN=0 跳过;ELEVATOR_DEPLOY_V2_DIR=/path 覆盖目标目录(默认同 deploy/v2-maven)。
set -euo pipefail
REPO="$(cd "$(dirname "$0")/.." && pwd)"
cd "$REPO"
if [[ -z "${JAVA_8:-}" ]]; then
for d in /usr/lib/jvm/java-8-openjdk-amd64 /usr/lib/jvm/java-1.8.0-openjdk; do
if [[ -x "$d/bin/java" ]]; then
export JAVA_8="$d"
break
fi
done
fi
: "${JAVA_8:=/usr/lib/jvm/java-8-openjdk-amd64}"
export JAVA_HOME="$JAVA_8"
export PATH="$JAVA_HOME/bin:$PATH"
if [[ ! -x "${JAVA_HOME}/bin/java" ]]; then
echo "ERROR: 未找到 JDK 8,请设置 JAVA_8 或安装 openjdk-8-jdk。" >&2
exit 1
fi
M2_LOCAL="${ELEVATOR_M2_REPO:-$REPO/.m2-elevator-nexus-only}"
mkdir -p "$M2_LOCAL"
LEGACY_VER="${CLOUDWALK_LEGACY_VERSION:-3.7.2-Brussels-SRX}"
ICOMP_VER="${ELEVATOR_INTELLIGENT_CWOSCOMPONENT_VERSION:-2.9.2-xinghewan}"
CWOS_EVENT_VER="${ELEVATOR_CWOS_SDK_EVENT_VERSION:-1.5.0-SNAPSHOT}"
GLOBAL_M2="${ELEVATOR_GLOBAL_M2:-$HOME/.m2/repository}"
parent_marker_file() {
echo "$M2_LOCAL/cn/cloudwalk/cloud/cloudwalk-cloud-common/${LEGACY_VER}/cloudwalk-cloud-common-${LEGACY_VER}.pom"
}
bootstrap_from_global_m2() {
local rel="cn/cloudwalk/cloud/cloudwalk-cloud-common/${LEGACY_VER}"
local src="$GLOBAL_M2/$rel"
if [[ ! -d "$src" ]]; then
echo "WARN: 全局仓库中无父 POM 目录: $src(将尝试相邻 legacy 自动 install" >&2
return 0
fi
mkdir -p "$M2_LOCAL/$rel"
cp -a "$src/." "$M2_LOCAL/$rel/"
echo "==> 已从全局 ~/.m2 预置父 POM(仅该目录): $rel"
}
purge_last_updated_under() {
local base="$1"
[[ -d "$base" ]] || return 0
find "$base" -name '*.lastUpdated' -type f -print -delete 2>/dev/null || true
}
# 参数: marker_pom_path pom_file human_desc
install_one_snapshot_parent_to_local_repo() {
local marker="$1"
local pom="$2"
local desc="$3"
if [[ -f "$marker" ]]; then
echo "==> 隔离库已有: $desc"
return 0
fi
if [[ ! -f "$pom" ]]; then
echo "ERROR: 隔离库缺少 $desc,且未找到 POM: $pom" >&2
echo " 请将对应父 POM 发布到 Nexus,或设置 ELEVATOR_LEGACY_CWOS_RESOURCE_DIR / ELEVATOR_LEGACY_DAVINCI_MANAGER_POM。" >&2
exit 1
fi
echo "==> 向隔离库安装(mvn -N install: $desc -> $pom"
mvn -Dmaven.repo.local="$M2_LOCAL" -f "$pom" -N install -DskipTests
if [[ ! -f "$marker" ]]; then
echo "ERROR: install 后仍缺少: $marker" >&2
exit 1
fi
}
install_legacy_cloudwalk_parent_to_local_repo() {
local marker
marker="$(parent_marker_file)"
if [[ -f "$marker" ]]; then
echo "==> 隔离库已有父 POM: $marker"
return 0
fi
if [[ "${ELEVATOR_AUTO_INSTALL_LEGACY_PARENT:-1}" != "1" ]]; then
echo "ERROR: 隔离库缺少父 POM 且 ELEVATOR_AUTO_INSTALL_LEGACY_PARENT=0$marker" >&2
exit 1
fi
local def_pom
def_pom="$(cd "$REPO/.." && pwd)/maven-cloudwalk-legacy-public/cloudwalk-cloud-common/pom.xml"
local legacy_pom="${ELEVATOR_LEGACY_CLOUDWALK_COMMON_POM:-$def_pom}"
if [[ ! -f "$legacy_pom" ]]; then
echo "ERROR: 隔离库无 cloudwalk-cloud-common POM,且未找到:$legacy_pom" >&2
echo " 请设置 ELEVATOR_LEGACY_CLOUDWALK_COMMON_POM,或将该父 POM 发布到 Nexus。" >&2
exit 1
fi
echo "==> 向隔离库安装父 POMmvn -N install: $legacy_pom"
mvn -Dmaven.repo.local="$M2_LOCAL" -f "$legacy_pom" -N install -DskipTests
if [[ ! -f "$marker" ]]; then
echo "ERROR: install 后仍缺少: $marker" >&2
exit 1
fi
}
if [[ "${ELEVATOR_BOOTSTRAP_FROM_GLOBAL_M2:-1}" == "1" ]]; then
echo "==> 尝试从全局 ~/.m2 预置 cloudwalk-cloud-common${LEGACY_VER}"
bootstrap_from_global_m2
fi
install_legacy_cloudwalk_parent_to_local_repo
# 私服缺 cwos-portal / cwos-component-resource / cloudwalk-intelligent-davinci-manager 等父 POM 时,用相邻反应堆根 POM 闭合描述符。
install_legacy_snapshot_parents_to_local_repo() {
if [[ "${ELEVATOR_AUTO_INSTALL_LEGACY_SNAPSHOT_PARENTS:-1}" != "1" ]]; then
return 0
fi
local root
root="$(cd "$REPO/.." && pwd)"
local def_cwos="$root/maven-cwos-resource"
local def_davinci="$root/maven-cloudwalk-intelligent-davinci-manager/pom.xml"
local cwos_base="${ELEVATOR_LEGACY_CWOS_RESOURCE_DIR:-$def_cwos}"
install_one_snapshot_parent_to_local_repo \
"$M2_LOCAL/cn/cloudwalk/cloud/cwos-component-resource/1.0.0-SNAPSHOT/cwos-component-resource-1.0.0-SNAPSHOT.pom" \
"$cwos_base/cwos-component-resource/pom.xml" \
"cwos-component-resource 1.0.0-SNAPSHOT"
install_one_snapshot_parent_to_local_repo \
"$M2_LOCAL/cn/cloudwalk/cwos-portal/1.0.0-SNAPSHOT/cwos-portal-1.0.0-SNAPSHOT.pom" \
"$cwos_base/cwos-portal/pom.xml" \
"cwos-portal 1.0.0-SNAPSHOT"
install_one_snapshot_parent_to_local_repo \
"$M2_LOCAL/cn/cloudwalk/intelligent/cloudwalk-intelligent-davinci-manager/1.1.7-SNAPSHOT/cloudwalk-intelligent-davinci-manager-1.1.7-SNAPSHOT.pom" \
"${ELEVATOR_LEGACY_DAVINCI_MANAGER_POM:-$def_davinci}" \
"cloudwalk-intelligent-davinci-manager 1.1.7-SNAPSHOT"
install_one_snapshot_parent_to_local_repo \
"$M2_LOCAL/cn/cloudwalk/cloudwalk-device-sdk/2.2.0/cloudwalk-device-sdk-2.2.0.pom" \
"${ELEVATOR_LEGACY_DEVICE_SDK_POM:-$root/maven-cloudwalk-device-sdk/pom.xml}" \
"cloudwalk-device-sdk 2.2.0"
}
install_legacy_snapshot_parents_to_local_repo
bootstrap_intelligent_cwoscomponent_from_global() {
if [[ "${ELEVATOR_BOOTSTRAP_INTELLIGENT_CWOSCOMPONENT_FROM_GLOBAL:-1}" != "1" ]]; then
return 0
fi
local copied=0
# 2.9.2 线:父 artifactId 为 intelligent-cwoscomponent(非 reactor/parent 3.x 命名)
for art in intelligent-cwoscomponent intelligent-cwoscomponent-interface intelligent-cwoscomponent-rest; do
local rel="cn/cloudwalk/intelligent/${art}/${ICOMP_VER}"
if [[ -d "$GLOBAL_M2/$rel" ]]; then
mkdir -p "$M2_LOCAL/$rel"
cp -a "$GLOBAL_M2/$rel/." "$M2_LOCAL/$rel/"
echo "==> 已从 ~/.m2 预置 intelligent-cwoscomponent: $rel"
copied=1
fi
done
if [[ "$copied" -eq 0 ]]; then
echo "WARN: ~/.m2 中未找到 intelligent-cwoscomponent-*${ICOMP_VER}),将视情况从 cw_lib install-file。" >&2
fi
}
install_intelligent_cwoscomponent_from_cw_lib_if_missing() {
if [[ "${ELEVATOR_AUTO_INSTALL_INTELLIGENT_CWOSCOMPONENT:-1}" != "1" ]]; then
return 0
fi
if [[ "$ICOMP_VER" == "3.0.0-xinghewan" ]]; then
echo "ERROR: 本产品线禁止使用 intelligent-cwoscomponent 3.0.0-xinghewan;请使用 2.9.2-xinghewancw_lib)。" >&2
exit 1
fi
local marker="$M2_LOCAL/cn/cloudwalk/intelligent/intelligent-cwoscomponent-rest/${ICOMP_VER}/intelligent-cwoscomponent-rest-${ICOMP_VER}.jar"
if [[ -f "$marker" ]]; then
echo "==> 隔离库已有 intelligent-cwoscomponent-rest${ICOMP_VER}"
return 0
fi
local root cw_lib
root="$(cd "$REPO/.." && pwd)"
cw_lib="${ELEVATOR_CW_LIB_DIR:-$root/cw-elevator-application-V1.0.0.20211103/cw_lib}"
local stub="$REPO/scripts/legacy-poms/intelligent-cwoscomponent-2.9.2-xinghewan-parent.pom"
local ij="$cw_lib/intelligent-cwoscomponent-interface-${ICOMP_VER}.jar"
local ip="$cw_lib/intelligent-cwoscomponent-interface-${ICOMP_VER}.pom"
local rj="$cw_lib/intelligent-cwoscomponent-rest-${ICOMP_VER}.jar"
local rp="$cw_lib/intelligent-cwoscomponent-rest-${ICOMP_VER}.pom"
if [[ ! -f "$stub" ]]; then
echo "ERROR: 缺少父 POM 桩: $stub" >&2
exit 1
fi
if [[ ! -f "$ij" || ! -f "$ip" || ! -f "$rj" || ! -f "$rp" ]]; then
echo "ERROR: cw_lib 缺少 intelligent-cwoscomponent 2.9.2 构件,无法安装到隔离库。" >&2
echo " 期望目录: $cw_lib(设 ELEVATOR_CW_LIB_DIR 可覆盖)" >&2
echo " 需要: intelligent-cwoscomponent-interface/rest 的 .jar 与 .pom" >&2
exit 1
fi
echo "==> 向隔离库安装 intelligent-cwoscomponent 父 POM(桩): $stub"
mvn -Dmaven.repo.local="$M2_LOCAL" -f "$stub" -N install -DskipTests
echo "==> install-file intelligent-cwoscomponent-interface${ICOMP_VER}"
mvn -Dmaven.repo.local="$M2_LOCAL" org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file \
-DpomFile="$ip" -Dfile="$ij" -Dpackaging=jar
echo "==> install-file intelligent-cwoscomponent-rest${ICOMP_VER}"
mvn -Dmaven.repo.local="$M2_LOCAL" org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file \
-DpomFile="$rp" -Dfile="$rj" -Dpackaging=jar
if [[ ! -f "$marker" ]]; then
echo "ERROR: install 后仍缺少: $marker" >&2
exit 1
fi
}
bootstrap_intelligent_cwoscomponent_from_global
install_intelligent_cwoscomponent_from_cw_lib_if_missing
bootstrap_cwos_sdk_event_from_global() {
if [[ "${ELEVATOR_BOOTSTRAP_CWOS_SDK_EVENT_FROM_GLOBAL:-1}" != "1" ]]; then
return 0
fi
local rel="cn/cloudwalk/cloud/cwos-sdk-event/${CWOS_EVENT_VER}"
if [[ -d "$GLOBAL_M2/$rel" ]]; then
mkdir -p "$M2_LOCAL/$rel"
cp -a "$GLOBAL_M2/$rel/." "$M2_LOCAL/$rel/"
echo "==> 已从 ~/.m2 预置 cwos-sdk-event: $rel"
else
echo "WARN: ~/.m2 中无 cwos-sdk-event${CWOS_EVENT_VER}),将视情况 mvn install legacy 模块。" >&2
fi
}
install_cwos_sdk_event_if_missing() {
if [[ "${ELEVATOR_AUTO_INSTALL_CWOS_SDK_EVENT:-1}" != "1" ]]; then
return 0
fi
local marker="$M2_LOCAL/cn/cloudwalk/cloud/cwos-sdk-event/${CWOS_EVENT_VER}/cwos-sdk-event-${CWOS_EVENT_VER}.jar"
if [[ -f "$marker" ]]; then
echo "==> 隔离库已有 cwos-sdk-event${CWOS_EVENT_VER}"
return 0
fi
local root def_pom
root="$(cd "$REPO/.." && pwd)"
def_pom="$root/maven-cloudwalk-legacy-public/cwos-sdk-event/pom.xml"
local ev_pom="${ELEVATOR_LEGACY_CWOS_SDK_EVENT_POM:-$def_pom}"
if [[ ! -f "$ev_pom" ]]; then
echo "ERROR: 私服缺少 cwos-sdk-event:${CWOS_EVENT_VER},且未找到: $ev_pom" >&2
exit 1
fi
echo "==> 向隔离库 install cwos-sdk-event: $ev_pom"
mvn -Dmaven.repo.local="$M2_LOCAL" -f "$ev_pom" install -DskipTests
if [[ ! -f "$marker" ]]; then
echo "ERROR: install 后仍缺少: $marker" >&2
exit 1
fi
}
bootstrap_cwos_sdk_event_from_global
install_cwos_sdk_event_if_missing
bootstrap_cloudwalk_modules_from_global() {
if [[ "${ELEVATOR_BOOTSTRAP_CLOUDWALK_MODULES_FROM_GLOBAL:-1}" != "1" ]]; then
return 0
fi
local _arts="${ELEVATOR_CLOUDWALK_BOOTSTRAP_ARTIFACTS:-cloudwalk-common-result cloudwalk-common-web cloudwalk-common-serial cloudwalk-common-service}"
local copied=0
for a in $_arts; do
[[ -n "$a" ]] || continue
local rel="cn/cloudwalk/cloud/${a}/${LEGACY_VER}"
if [[ -d "$GLOBAL_M2/$rel" ]]; then
mkdir -p "$M2_LOCAL/$rel"
cp -a "$GLOBAL_M2/$rel/." "$M2_LOCAL/$rel/"
echo "==> 已从 ~/.m2 预置 cloudwalk 构件目录: $rel"
copied=1
fi
done
if [[ "$copied" -eq 0 ]]; then
echo "WARN: ~/.m2 中未找到上述 cloudwalk-common-* 目录(${LEGACY_VER}),将完全依赖 Nexus 传递依赖。" >&2
fi
}
bootstrap_cloudwalk_modules_from_global
echo "==> 清理 cn/cloudwalk 下失败缓存 (*.lastUpdated)"
purge_last_updated_under "$M2_LOCAL/cn/cloudwalk"
MVN_GOALS="${ELEVATOR_MVN_GOALS:-clean package}"
echo "==> 使用隔离本地仓库: $M2_LOCAL"
echo "==> mvn -Dmaven.repo.local=... $MVN_GOALS -DskipTests -U"
mvn -Dmaven.repo.local="$M2_LOCAL" -U $MVN_GOALS -DskipTests
JAR="$REPO/cw-elevator-application-starter/target/cw-elevator-application-2.0.0.jar"
echo "==> 产物: $JAR"
test -f "$JAR" && ls -la "$JAR"
if [[ -f "$JAR" && "${ELEVATOR_DEPLOY_V2_MAVEN:-1}" == "1" ]]; then
V2_DEPLOY_DIR="${ELEVATOR_DEPLOY_V2_DIR:-$REPO/deploy/v2-maven}"
mkdir -p "$V2_DEPLOY_DIR"
install -m0644 "$JAR" "$V2_DEPLOY_DIR/cw-elevator-application-2.0.0.jar"
echo "==> 已发布到 deploy/v2-maven(替换 JAR: $V2_DEPLOY_DIR/cw-elevator-application-2.0.0.jar"
ls -la "$V2_DEPLOY_DIR/cw-elevator-application-2.0.0.jar"
fi
if [[ "${ELEVATOR_SYNC_DEPLOY:-0}" == "1" ]]; then
SYNC="$REPO/deploy/sync-jars.sh"
if [[ -x "$SYNC" ]] || chmod +x "$SYNC" 2>/dev/null; then
echo "==> ELEVATOR_SYNC_DEPLOY=1 -> $SYNC"
bash "$SYNC"
else
echo "WARN: 未找到可执行的 deploy/sync-jars.sh,跳过同步。" >&2
fi
fi