mirror of
https://github.com/hpd840321/starRiverProperty.git
synced 2026-06-10 00:40:30 +08:00
7b2bd307f1
- 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.
6.6 KiB
6.6 KiB
组织服务组件编译方案评估
日期:2026-05-05 来源:ninca-common-component-organization-V2.9.2_20210730.jar
1. 原始依赖环境
| 项目 | 值 |
|---|---|
| Spring Boot | 1.5.17.RELEASE |
| Spring Cloud | Edgware.SR3 |
| Spring Framework | 4.3.29.RELEASE |
| JDK | 1.8 |
| Servlet | 3.1.0 (javax) |
2. 反编译模块结构
maven-ninca-common-component-organization/
├── cwos-component-organization-interface-v2.9.2_xinghewan/ # 接口 + DTO (无外部依赖)
├── cwos-component-organization-data-v2.9.2_xinghewan/ # DAO + Entity (依赖 interface)
├── cwos-component-organization-service-v2.9.2_xinghewan/ # 业务逻辑 (依赖 data + interface)
└── cwos-component-organization-web-v2.9.2_xinghewan/ # Controller (依赖 service)
依赖链:web → service → data → interface
3. 外部依赖分析
3.1 可直接复用的 V2 Maven 模块
| 依赖 | 来源模块 | 状态 |
|---|---|---|
| cloudwalk-common-result | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-serial | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-service | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-data | 无对应模块 | ❌ 需新建 |
| cloudwalk-device-manager-common | maven-cloudwalk-device-manager | ✅ 已有 |
| cloudwalk-device-manager-interface | maven-cloudwalk-device-manager | ✅ 已有 |
| cloudwalk-device-sdk-interface | maven-cloudwalk-device-sdk | ✅ 已有 |
| cloudwalk-device-sdk-protocol-entity | maven-cloudwalk-device-sdk | ✅ 已有 |
| cwos-common-aks-interface | maven-cwos-common-aks | ✅ 已有 |
| cwos-device-authentication-interface | maven-cwos-device-authentication | ✅ 已有 |
| cwos-component-resource-* | maven-cwos-resource | ✅ 已有 |
| davinci-manager-* | maven-cloudwalk-intelligent-davinci-manager | ✅ 已有 |
| cwos-sdk-event | maven-cloudwalk-legacy-public | ✅ 已有 |
| cloudwalk-common-result/web/serial | maven-cloudwalk-legacy-public | ✅ 已有 |
3.2 缺失的 CloudWalk 内部依赖
这些 JAR 存在于原始 fat JAR 的 BOOT-INF/lib/ 中,但本地没有对应的 Maven 模块:
| 依赖 | 说明 | 数量 |
|---|---|---|
| cn.cloudwalk.client.aggregate.* | 聚合服务接口 (cwos-core-aggregate-interface) | ~30 个类 |
| cn.cloudwalk.client.account.* | 账户服务接口 (cwos-component-account-interface) | ~15 个类 |
| cn.cloudwalk.client.resource.* | 资源服务接口 (cwos-component-resource-interface) | ~20 个类 |
| cn.cloudwalk.client.device.mgn.* | 设备管理原子接口 (cwos-core-device-mgn-atomic-interface) | ~10 个类 |
| cn.cloudwalk.client.device.processor.* | 设备处理器接口 (cwos-device-processor-interface) | ~5 个类 |
| cn.cloudwalk.rest.* | REST 客户端 (cwos-component-*-rest) | ~20 个类 |
| cn.cloudwalk.task.* | 任务引擎 (ai-cloud-task-*) | ~10 个类 |
| ninca-common-message-center | 消息中心接口 | ~5 个类 |
| 其他 | pineappine, aliyun, opencv 等 | ~10 个类 |
合计缺失约 125 个外部类引用。
3.3 移植可行性判断
| 依赖组 | 能否从已有 JAR 提取 | 工作量 |
|---|---|---|
| cn.cloudwalk.client.aggregate.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.client.account.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.client.resource.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| cn.cloudwalk.rest.* | ✅ JAR 在 lib/ 中,可反编译安装 | 中 |
| ai-cloud-task-* | ✅ JAR 在 lib/ 中 | 低 |
| 第三方 (opencv, aliyun 等) | ✅ 直接从 lib/ 提取 | 低 |
4. 三种编译方案
方案 A:完整 Maven 多模块(推荐)
maven-ninca-common-component-organization/
├── pom.xml # reactor POM
├── cwos-component-organization-interface/
│ └── pom.xml # 继承 reactor
├── cwos-component-organization-data/
│ └── pom.xml
├── cwos-component-organization-service/
│ └── pom.xml
└── cwos-component-organization-web/
└── pom.xml
步骤:
- 创建 reactor POM,继承 Spring Boot 1.5.17 parent
- 从原始 JAR 的
BOOT-INF/lib/提取所有缺失的 CloudWalk JAR - 用
mvn install:install-file安装到本地 .m2 仓库 - 各子模块 POM 声明依赖
优点:可真正编译、可 IDE 索引、可验证代码正确性 缺点:工作量大(~80 个 JAR 需要处理);版本与 V2 主线可能不一致
方案 B:混合方案(实用主义)
maven-ninca-common-component-organization/
├── pom.xml # 聚合 POM
├── organization-interface/
│ └── pom.xml # 仅 interface 模块可编译
└── organization-libs/ # 存放 lib JAR
└── lib/*.jar # 直接从原始 JAR 提取
步骤:
- 仅 interface 模块完全 Maven 化(纯 DTO,无外部依赖)
- data/service/web 模块标记为
pom或jar,依赖通过systemscope 引用 lib/ 目录 - 从原始 JAR 的
BOOT-INF/lib/复制所有 JAR 到organization-libs/lib/
优点:interface 可编译;剩余模块至少可 IDE 打开 缺点:system scope 不可传递;不适合 CI 构建
方案 C:纯参考(不编译)
保持当前状态(已清理的反编译源码 + 中文注释),仅用于:
- 代码走查和业务逻辑分析
- Person detail → floorList 调用链追踪
- 策略需求的功能验证
优点:零工作量 缺点:不能编译验证、IDE 报错
5. 最终决策:不编译,直接用原始 JAR
结论
反编译源码仅作为走查参考,不进行 Maven 化编译。任何需要依赖组织服务的项目,直接引用原始 JAR:
源码/maven-cw-elevator-application/releases/cw-elevator-application-v2.0.10-.../org-service/.../ninca-common-component-organization-V2.9.2_20210730.jar
理由
| 考量 | 说明 |
|---|---|
| 复杂度 | 避免引入 80+ 个依赖 JAR 的版本管理问题 |
| 维护成本 | 反编译源码不改动、不编译,永远与原始 JAR 一致 |
| 目标明确 | 仅用于走查 floorList 生成逻辑,不需要编译 |
| 引用方式 | 需要时通过 system scope 或直接解压查看 |
反编译源码的定位
maven-ninca-common-component-organization/
→ 走查参考(已清理 CFR 痕迹 + 中文注释 + Unicode 转中文)
→ 不参与构建
→ 不改动
→ 与原始 JAR 字节码保持语义一致(已验证 56/56 方法匹配)