Files
starRiverProperty/docs/superpowers/data/2026-05-05-component-org-compile-assessment.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

6.6 KiB
Raw Permalink Blame History

组织服务组件编译方案评估

日期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

步骤:

  1. 创建 reactor POM,继承 Spring Boot 1.5.17 parent
  2. 从原始 JAR 的 BOOT-INF/lib/ 提取所有缺失的 CloudWalk JAR
  3. mvn install:install-file 安装到本地 .m2 仓库
  4. 各子模块 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 提取

步骤:

  1. 仅 interface 模块完全 Maven 化(纯 DTO,无外部依赖)
  2. data/service/web 模块标记为 pomjar,依赖通过 system scope 引用 lib/ 目录
  3. 从原始 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 方法匹配)