Files
starRiverProperty/docs/architecture/V1-V2-电梯依赖比对.md
hpd840321 7b2bd307f1 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.
2026-05-09 09:56:45 +08:00

16 KiB
Raw Permalink Blame History

V1 与 V2 电梯应用依赖:详细比对说明

本文说明 V1 历史运行包V2 Maven 反应堆 在依赖上的对应关系、已核对的一致项、已知差异与后续可执行动作。比对以仓库内 **cw-elevator-application-V1.0.0.20211103** 为 V1 基线。


1. V1 运行包 classpath 结构(与 V2 可执行 JAR 的对应)

位置 路径 数量 含义
第三方与 Spring 栈 cw-elevator-application-V1.0.0.20211103/lib/*.jar 245 与 Boot 1.5、Spring Cloud、MyBatis、Netty、Feign 等一致;文件名即 artifactId-version 形态为主。
云从 + 电梯模块 + 智能组件 cw-elevator-application-V1.0.0.20211103/cw_lib/*.jar 24 与 V2 pom.xml显式声明版本 的坐标对齐;电梯四模块以 1.0-SNAPSHOT JAR 形式落盘。

V2 可执行包由 spring-boot-maven-plugin repackage 后,上述两类依赖会进入 **BOOT-INF/lib/**;概念上 V2 ≈ cw_lib lib 的传递闭包,但 具体 JAR 列表以 Maven 解析结果为准

完整文件名清单(机器可读)

  • docs/architecture/data/v1-elevator-lib-jars.txt245 行)
  • docs/architecture/data/v1-elevator-cw-lib-jars.txt24 行)

2. cw_lib24)与 V2 反应堆版本:逐项一致

下列 JAR 在 V1 cw_lib 中的 文件名 与 V2 maven-cw-elevator-application/pom.xml<properties> / dependencyManagement 一致(脚本已自动核对):

# V1 cw_lib 文件名 V2 约束来源
1 cloudwalk-common-event-3.7.2-Brussels-SRX.jar cloudwalk.internal.version
2 cloudwalk-common-result-3.7.2-Brussels-SRX.jar cloudwalk.legacy.public.version
3 cloudwalk-common-serial-3.7.2-Brussels-SRX.jar cloudwalk.legacy.public.version
4 cloudwalk-common-service-3.7.2-Brussels-SRX.jar cloudwalk.internal.version
5 cloudwalk-common-web-3.7.2-Brussels-SRX.jar cloudwalk.legacy.public.version
6 cloudwalk-device-manager-common-2.0.2.jar V1 随包固定;V2 由 **intelligent-cwoscomponent-rest** 等传递引入(反应堆未单独 pin 版本,以解析树为准)
7 cloudwalk-device-manager-interface-2.0.2.jar 同上
8 cloudwalk-device-sdk-protocol-entity-2.2.0.jar 同上
9 cloudwalk-intelligent-component-lock-1.1.1-SNAPSHOT.jar intelligent.lock.version
10 cw-elevator-application-common-1.0-SNAPSHOT.jar V2cn.cloudwalk.elevator:cw-elevator-application-common:**2.0-SNAPSHOT**
11 cw-elevator-application-data-1.0-SNAPSHOT.jar V2…-data:**2.0-SNAPSHOT**
12 cw-elevator-application-service-1.0-SNAPSHOT.jar V2…-service:**2.0-SNAPSHOT**
13 cw-elevator-application-web-1.0-SNAPSHOT.jar V2…-web:**2.0-SNAPSHOT**
14 cwos-common-aks-interface-1.0.0-SNAPSHOT.jar V1 随包;V2 若未在反应堆显式声明则来自传递依赖
15 cwos-component-resource-data-1.0.0-SNAPSHOT.jar 同上
16 cwos-component-resource-interface-1.0.0-SNAPSHOT.jar 同上
17 cwos-device-authentication-interface-1.0.0-SNAPSHOT.jar 同上
18 cwos-java-sdk-resource-1.0.0-SNAPSHOT.jar cwos.sdk.resource.version
19 cwos-portal-interface-1.0.0-SNAPSHOT.jar V1 随包;V2 传递
20 cwos-sdk-event-1.5.0-SNAPSHOT.jar cwos.sdk.event.version
21 davinci-manager-common-1.1.7-SNAPSHOT.jar davinci-manager-storage 同族
22 davinci-manager-storage-1.1.7-SNAPSHOT.jar davinci.manager.storage.version
23 intelligent-cwoscomponent-interface-2.9.2-xinghewan.jar intelligent.cwoscomponent.version
24 intelligent-cwoscomponent-rest-2.9.2-xinghewan.jar intelligent.cwoscomponent.version

结论(云从/智能主干):与对拍、校验切面相关的 **cloudwalk-common-* 3.7.2-Brussels-SRX** 与 **intelligent-cwoscomponent-* 2.9.2-xinghewan** 等,V1 cw_lib 与 V2 POM 显式口径一致;对拍行为差异 不宜 首先归因于「cloudwalk 主版本不一致」。

电梯自研模块V1 为 1.0-SNAPSHOT 四 JARV2 反应堆为 2.0-SNAPSHOT —— 属 预期版本升级,需用源码白名单比对(见 V1-V2-电梯API源码比对白名单.md),而非依赖坐标「偷偷不一致」。


3. V1 lib245)与 V2 dependencyManagement:显式对齐项

V2 反应堆在 <properties>主动钉死、且与 V1 lib常见文件名 对齐的第三方包括(节选):

属性 V1 lib 中典型 JAR
fastjson.version 1.2.73 fastjson-1.2.73.jar
guava.version 20.0 guava-20.0.jar
poi.version 3.15 poi-3.15.jarpoi-ooxml-3.15.jar
ant.version 1.9.6 见下节「多版本」
mybatis-spring-boot.version 1.3.1 mybatis-spring-boot-starter-1.3.1.jar
pagehelper.version / pagehelper-spring-boot.version 5.1.2 / 1.2.5 pagehelper-5.1.2.jar
shardingsphere.version 4.0.0 sharding-jdbc-spring-boot-starter-4.0.0.jar
spring-cloud.version Edgware.SR6 见下节

Spring BootV2 父 POM 为 **spring-boot-starter-parent 1.5.17.RELEASE**V1 lib 中可见 **spring-boot-*-1.5.17.RELEASE.jar**,主版本一致。


4. V1 lib 中的「多版本并存」风险(V2 由 BOM 收敛)

lib 内文件名做 artifact 前缀聚合 后,典型 多版本 包括:

前缀 并存版本(示例) 说明
feign-core 8.18.0 与 9.5.0 历史传递与 Netflix/OpenFeign 栈叠加;实际生效顺序依赖 fat JAR Class-Path / 装载顺序
ant 1.6.5 与 1.9.6 等 V2 反应堆仅钉 **ant.version = 1.9.6**V1 物理目录仍含旧 ant。
rxjava 1.x 与 2.x 常见于 Netflix + 其它客户端并存。

V2 由 **spring-boot-dependencies + spring-cloud-dependenciesEdgware.SR6** 统一解析,理论上 比「手工铺 245 个 jar」更可重复;若需 字节级 证明与 V1 运行时一致,应在 同一 JDK 下导出 **mvn dependency:tree** 与 V1 进程 **jcmd <pid> VM.classloader_hierarchy** / 或解压 fat JAR 的 BOOT-INF/lib 做集合 diff。


5. V2 反应堆「直接依赖」模块一览(非传递闭包)

模块 直接引入的典型坐标(无版本处由 dependencyManagement 解析)
cw-elevator-application-starter spring-boot-starter-web、MyBatis、Actuator、Cache、AOP、OpenFeign、cw-elevator-application-web
cw-elevator-application-web cloudwalk-common-webcw-elevator-application-service
cw-elevator-application-service cloudwalk-common-servicespring-txcloudwalk-common-serialcwos-java-sdk-resourcejackson-datatype-jsr310cloudwalk-intelligent-component-lockcloudwalk-common-eventcwos-sdk-eventcw-elevator-application-datadavinci-manager-storageintelligent-cwoscomponent-restspring-cloud-starter-openfeignjavax.annotation-apijsr305
cw-elevator-application-common cloudwalk-common-result、Guava、POI、Ant、thumbnailator、commons-io、fastjson、tomcat-embed-corecloudwalk-common-webspring-boot-autoconfigurecommons-lang3、ZXing、zip4j、spring-webspring-data-redis、lombok、jackson-datatype-jsr310
cw-elevator-application-data cw-elevator-application-commoncloudwalk-common-resultspring-beans/context、MyBatis、mysql、mybatis-spring-boot-starter、HikariCP、pagehelper、shardingsphere

与 V1 的差异点V2 **cw-elevator-application-common** 显式增加 **spring-boot-autoconfigure**(见模块内注释:私服上 cloudwalk-common-web 传递不完整时的 编译 classpath 补齐)。V1 若完全依赖传递,编译期/工具链 与 V2 可能略有不同,但 运行时 通常仍由 Boot 引入同一类库。


5.1 反应堆子模块报「在 nexus-public 找不到 sibling SNAPSHOT」

现象datacw-elevator-application-commonwebservice 等,日志只出现 Downloading from nexus-public: .../elevator/...

原因:全局 ~/.m2/settings.xml**mirrorOf=***(或等价过宽)时,Maven 易把 本反应堆未发布到私服的 SNAPSHOT 也导向 Nexus,导致失败。不需要为此逐个 deploy 电梯子模块到私服。

本仓库已落盘maven-cw-elevator-application/.mvn/maven.config + .mvn/settings.xml:用 -s 绕过 ~/.m2profile 激活 **nexus-publichttp;并含 一条 id=maven-default-http-blockermirrorOf=dummy 的占位 <mirror>,用于覆盖 Maven 3.8.1+ 安装目录里对 **external:http:* 的默认拦截(否则会出现 Blocked mirror for repositories: [nexus-public (...http...)])。不是 mirrorOf=*,不会把反应堆 sibling 整体导向私服。私服若需账号,请在 .mvn/settings.xml 内补 <servers>(勿提交密钥)。若 Nexus 已支持 HTTPS,更推荐改仓库 URL 为 https:// 并删除该占位 mirror。

隔离构建./scripts/build_nexus_only.sh 会额外 purge **cn/cloudwalk/elevator** 下 *.lastUpdated,并在使用 clean install 时把 sibling 写入隔离库。


6. 生成「V2 全量传递依赖树」与与 V1 的集合 diff(推荐下一步)

当前环境若 无法安装反应堆子模块无法访问 Nexus,则无法在 CI 外自动生成 V2 完整 245+ 级传递树。请在 可解析依赖 的环境、于 **maven-cw-elevator-application 根**执行(自动使用 .mvn/settings.xml;与 build_nexus_only.sh 对齐隔离库时可加 -Dmaven.repo.local=$PWD/.m2-elevator-nexus-only):

cd maven-cw-elevator-application
mvn -pl cw-elevator-application-starter -am -DskipTests clean install
mvn -pl cw-elevator-application-starter -am -DskipTests dependency:tree \
  -DoutputFile=cw-elevator-application-starter/target/v2-starter-dependency-tree.txt

然后将 **target/v2-starter-dependency-tree.txt** 中的 groupId:artifactId:jar:version**docs/architecture/data/v1-elevator-lib-jars.txt** 做集合差集(仅 artifactId-version 对齐即可),即可得到 「V2 有而 V1 lib 无」「V1 lib 有而 V2 未解析到」 的完整列表。


7. 自动化脚本(可重复输出摘要)

仓库根目录执行:

python3 scripts/compare_v1_v2_elevator_dependencies.py

将打印:cw_lib 与 V2 属性对齐核对、V1 lib 多版本示例、以及生成 dependency:tree 的 Maven 命令提示。


8. 总括结论(供评估「下一步计划」)

  1. 云从公共件 + intelligent 2.9.2 + davinci/cwos 等与对拍强相关的坐标V1 cw_lib 与 V2 pom.xml 已对齐
  2. 电梯四模块V1 1.0-SNAPSHOT JAR vs V2 2.0-SNAPSHOT 源码 —— 预期差异,行为差应结合 源码白名单 diff + 运行时 看。
  3. 245 个第三方 JARV2 由 Boot 1.5.17 + Cloud Edgware.SR6 BOM 收敛;V1 物理目录存在 Feign/Ant/RxJava 多版本与「仅业务源码不同」假设不完全相容 —— 若要对齐到「与 V1 进程 classpath 完全一致」,需 依赖树 diff,不能只盯 cw_lib
  4. 下一步建议优先级:① 在 CI 生成并归档 **dependency:tree**;② 与 v1-elevator-lib-jars.txt差集报告;③ 对差集中 多版本冲突 项做 运行时类加载验证(仅静态比对不足以解释偶发 NPE/空响应)。

相关文档

  • API 调用链源码比对白名单:V1-V2-电梯API源码比对白名单.md
  • 对拍与根因说明:../../maven-cw-elevator-application/tools/elevator_api_parity/API-RECONCILIATION.md