- 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.
16 KiB
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.txt(245 行)docs/architecture/data/v1-elevator-cw-lib-jars.txt(24 行)
2. cw_lib(24)与 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 |
V2:cn.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 四 JAR,V2 反应堆为 2.0-SNAPSHOT —— 属 预期版本升级,需用源码白名单比对(见 V1-V2-电梯API源码比对白名单.md),而非依赖坐标「偷偷不一致」。
3. V1 lib(245)与 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.jar、poi-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 Boot:V2 父 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-dependencies(Edgware.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-web、cw-elevator-application-service |
cw-elevator-application-service |
cloudwalk-common-service、spring-tx、cloudwalk-common-serial、cwos-java-sdk-resource、jackson-datatype-jsr310、cloudwalk-intelligent-component-lock、cloudwalk-common-event、cwos-sdk-event、cw-elevator-application-data、davinci-manager-storage、intelligent-cwoscomponent-rest、spring-cloud-starter-openfeign、javax.annotation-api、jsr305 |
cw-elevator-application-common |
cloudwalk-common-result、Guava、POI、Ant、thumbnailator、commons-io、fastjson、tomcat-embed-core、cloudwalk-common-web、spring-boot-autoconfigure、commons-lang3、ZXing、zip4j、spring-web、spring-data-redis、lombok、jackson-datatype-jsr310 |
cw-elevator-application-data |
cw-elevator-application-common、cloudwalk-common-result、spring-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」
现象:data 拉 cw-elevator-application-common、web 拉 service 等,日志只出现 Downloading from nexus-public: .../elevator/...。
原因:全局 ~/.m2/settings.xml 中 **mirrorOf=***(或等价过宽)时,Maven 易把 本反应堆未发布到私服的 SNAPSHOT 也导向 Nexus,导致失败。不需要为此逐个 deploy 电梯子模块到私服。
本仓库已落盘:maven-cw-elevator-application/.mvn/maven.config + .mvn/settings.xml:用 -s 绕过 ~/.m2;profile 激活 **nexus-public(http);并含 一条 id=maven-default-http-blocker、mirrorOf=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. 总括结论(供评估「下一步计划」)
- 云从公共件 + intelligent 2.9.2 + davinci/cwos 等与对拍强相关的坐标:V1
cw_lib与 V2pom.xml已对齐。 - 电梯四模块:V1 1.0-SNAPSHOT JAR vs V2 2.0-SNAPSHOT 源码 —— 预期差异,行为差应结合 源码白名单 diff + 运行时 看。
- 245 个第三方 JAR:V2 由 Boot 1.5.17 + Cloud Edgware.SR6 BOM 收敛;V1 物理目录存在 Feign/Ant/RxJava 多版本,与「仅业务源码不同」假设不完全相容 —— 若要对齐到「与 V1 进程 classpath 完全一致」,需 依赖树 diff,不能只盯
cw_lib。 - 下一步建议优先级:① 在 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