tech-stack.md 14.9 KB

技术栈

本页是范围内框架的依赖清单:11 个框架核心模块(xlyEntryxlyApixlyManagexlyBusinessServicexlyPersistxlyEntityxlyFlowxlyInterfacexlyMsgxlyErpJmsProductorxlyErpJmsConsumer)、一个插件(xlyPlc),以及一个共享工具模块(xlyPlatConstant;尽管名字带 Plat*,但 xlyPersist 依赖其中的 MultiThreadServerTimeContant)。

其他 plat 层模块(除 xlyPlatConstant 外的 xlyPlat*)、xlyFace(仍参与构建但不在文档范围内)和 AI 库均为范围外,本页不列。

如何读本页

两个列提供证据:

  • 位置:声明该库为 api(...)implementation(...)build.gradle 文件。多数库声明在 xlyPersist/build.gradle,并传递到依赖 xlyPersist 的模块。
  • 范围内源码引用:在上述范围内模块中对 xly-src/<module>/src/ 执行 grep -rln <package> 的文件计数,并给出代表路径。“未发现源码引用”表示该库已声明,但范围内模块的 Java、HTML 或 yaml 源码没有直接引用。它仍可能作为传递依赖进入 classpath,或由 Spring Boot autoconfig 消费。

本页不解释“为什么选择某个库”。如果 gradle 或 yaml 中有明确注释(例如 Netty 版本 pin),会引用该注释;否则只记录事实。

1. 应用平台

Library Version 位置 范围内源码引用
Spring Boot 2.2.5 xlyPersist/build.gradle(web、starter、aop、data-redis、data-mongodb、websocket、activemq、freemarker)、xlyApi/build.gradlexlyFlow/build.gradle 所有 *ApplicationBoot.java 类(xlyEntryxlyApixlyInterfacexlyPlc、构建时的 xlyFace)都继承 SpringBootServletInitializer
Embedded Tomcat Spring Boot 2.2.5 BOM spring-boot-starter-web 传递依赖 xlyEntry/src/main/resources/application-local.yml 10-29 行配置 server.port: 8080server.servlet.context-path: /xlyEntryserver.tomcat.*
Netty 4.1.65.Final xlyPersist/build.gradle 无直接 Java import。gradle 注释说明:“引入mq后netty-common-4.1.45.Final.jar、与netty-all-4.0.42.Final.jar冲突,所以引入”;该版本用于覆盖 MQ 库引入的冲突传递版本。
AspectJ Weaver 1.9.6 xlyApi/build.gradle(声明两次) 1 个文件在 xlyFlow/src/main/java/... import。主要消费者是 Spring Boot AOP starter;xlyApi 中的显式 pin 与 import 无关。
Lombok 1.18.8(xlyPersistxlyFlow)/ 1.18.20(xlyApi xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle 19 个文件 import lombok.*。xlyApi 同时声明为 implementationannotationProcessor

2. 持久化 {#persistence}

Library Version 位置 范围内源码引用
MyBatis 2.1.2 (mybatis-spring-boot-starter) xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle 102 个 Java 文件 import org.apache.ibatis.*org.mybatis.*;76 个在 xlyPersist。Mapper XML 位于 xlyPersist/src/main/resources/mapper/{erptable,business,test}/
MyBatis-Plus 3.3.0 xlyApi/build.gradle 2 个文件:xlyApi/.../SqlUtil.javaxlyApi/.../BaseController.java。不在 xlyApi 之外使用。
MySQL Connector/J 8.0.13 xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle yaml 中 spring.datasource.driverClassName: com.mysql.cj.jdbc.Driver
MSSQL JDBC sqljdbc4 3.0 + 本地 mssql-jdbc-6.2.2.jre8.jar xlyApi/build.gradlexlyInterface/build.gradlexlyFlow/build.gradle 5 个文件:xlyFlow 3 个,xlyInterface 2 个。
Oracle JDBC 本地 ojdbc6-11.2.0.4.jar xlyFlow/build.gradle xlyFlow 中 2 个文件。
Druid 1.2.16 xlyPersist/build.gradlexlyApi/build.gradle 6 个 Java 文件 import com.alibaba.druid.*;16 个 application-*.yml 引用 Druid 配置。
HikariCP 4.0.3 xlyApi/build.gradle 8 个文件引用 com.zaxxer.hikari。Java 配置包括 MasterDataSourceConfig.javaSlaveDataSourceConfig.java
Flyway 5.2.1 xlyPersist/build.gradle 无 Java import。通过 yaml spring.flyway.* 配置,enabled: false。脚本在 xlyEntry/src/main/resources/flyway/V*__*.sql
PageHelper 4.1.1 xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle 19 个文件 import com.github.pagehelper.*
jsqlparser 3.2 xlyPersist/build.gradle 1 个 xlyPersist/src/... 文件 import net.sf.jsqlparser

3. 缓存与内存

Library Version 位置 范围内源码引用
Spring Data Redis 2.2.5 xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle 3 个 Java 文件 import org.springframework.data.redis.*;所有模块 yaml 都有 spring.redis.* 配置块。
Lettuce Spring Data Redis 2.2.5 默认 driver 传递依赖 无直接 Java import;yaml 中有 spring.redis.lettuce.pool.*
Jedis 2.9.0 xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle 5 个文件 import redis.clients.jedis,包括 xlyMsg/.../wechat/util/JedisMsgUtil.java
Guava 18.0(xlyPersistxlyApi);20.0(xlyFlow xlyPersist/build.gradlexlyApi/build.gradlexlyFlow/build.gradle 8 个文件 import com.google.common.*

4. 工作流与调度

Library Version 位置 范围内源码引用
Activiti Engine 5.17.0 xlyPersist/build.gradlexlyApi/build.gradle;由 xlyFlow 消费 35 个文件 import org.activiti.*。与 6.0 modeler 库的版本偏差见 Activiti 集成
Activiti Spring Boot REST API 6.0.0 xlyFlow/build.gradle 由 Spring Boot autoconfig 和 xlyFlow 下 REST 端点消费。
Activiti JSON Converter 6.0.0 xlyFlow/build.gradle 用于 xlyFlow modeler 保存路径。
Quartz 2.3.0 xlyFlow/build.gradle 16 个文件 import org.quartz.*;xlyEntry yaml 通过 JDBC JobStore(qrtz_* 表)配置 spring.quartz.*

5. 消息

Library Version 位置 范围内源码引用
Spring JMS + ActiveMQ starter 2.2.5 xlyPersist/build.gradle (spring-boot-starter-activemq) 3 个文件 import org.springframework.jms.*;2 个文件 import org.apache.activemq.*。见消息
RocketMQ Spring Boot Starter 2.0.2 xlyPersist/build.gradle xlyBusinessService/src/ 中 4 个文件 import org.apache.rocketmq.*

6. 视图 / 模板

Library Version 位置 范围内源码引用
Thymeleaf 3.0.15 xlyApi.build.gradlexlyFlow.build.gradle;也由 starter 传递 2 个 xlyFlow Java 文件 import;modeler 模板在 xlyFlow/src/main/resources/templates/
Freemarker Spring starter 2.2.5 xlyPersist.build.gradlexlyApi.build.gradlexlyFlow.build.gradle 1 个 xlyFlow Java 文件 import。
Apache Batik 1.8 / 1.7 xlyPersist.build.gradlexlyFlow.build.gradle 1 个 xlyFlow 文件 import;modeler 静态资源也携带 Batik 资产。

7. 认证

Library Version 位置 范围内源码引用
Apache Shiro (shiro-spring) 1.3.2(xlyPersist)/ 1.4.2(xlyApixlyFlow xlyPersist.build.gradlexlyApi.build.gradlexlyFlow.build.gradle 6 个 Java 文件 import。未发现 @ConfigurationProperties("shiro")shiro.* 属性绑定,尽管 xlyEntry local yaml 有 shiro: 块。框架 HTTP auth 模式见 API 参考
shiro-ehcache / shiro-core / thymeleaf-extras-shiro 1.4.2 / 2.0.0 xlyFlow.build.gradle xlyFlow 模板中大量 Shiro tag;Java import 已计入上行。
Bouncy Castle bcprov-jdk14:138 xlyApi.build.gradle 2 个 RSA 工具文件。
commons-codec 1.16.0 xlyPersist.build.gradlexlyApi.build.gradle 18 个文件 import。

8. 报表与导出

打印 / 导出是框架第三方代码最大的消费面。

Library Version / 形态 位置 / 引用
iText 5.x 与 lowagie iText 2.x itextpdf 5.5.0 + com.lowagie:itext 2.1.7 都在 xlyPersist.build.gradle;两条分支同时存在于 classpath。
Aspose Cells / Words 本地 jar xlyPersist.build.gradle;多个 xlyPersist/src/ 文件 import com.aspose.*
Apache POI 4.1.2(xlyPersist / xlyFlow)/ 3.15(xlyApi 36 个文件 import。
jxls + jxls-poi / jxls-jexcel 2.8.1 / 1.0.9 22 个文件 import org.jxls.*
EasyExcel 本地 4.0.3 jars xlyBusinessService 中 10 个文件 import。
JasperReports / OLAP4J 本地 jar 报表相关路径 import。
ZXing / Barcode4J / Pinyin4j / PDFBox / Thumbnailator / jacob 多版本 条码、拼音、PDF、缩略图、COM 自动化等报表辅助功能。

9. 文件存储与 HTTP 客户端

Library Version 位置 / 引用
Aliyun OSS SDK 2.2.0 xlyPersist/src/main/java/com/xly/utils/OssUtil.java
commons-fileupload / commons-io 1.5 / 2.5 xlyFlow、xlyPersist、xlyEntry、xlyBusinessService 中有 import。
OkHttp + Okio 4.10.0 / 2.10.0 xlyApi 中 2 个文件 import。
Apache HttpClient 4.5.5 xlyBusinessService 中 1 个文件 import。
javax.mail 1.6.2 xlyPersist 中 1 个文件 import。

10. JSON 与通用工具

Library Version 范围内引用
FastJson 1.2.15(xlyPersistxlyApi)/ 1.2.60(xlyFlow 83 个文件 import。
Jackson 2.9.7(xlyFlow 显式)+ Spring 传递依赖 22 个文件 import。
Hutool 5.6.5(xlyPersist)/ 5.8.5(xlyApixlyFlow 271 个文件 import,覆盖所有范围内模块。
commons-lang3 / commons-collections4 3.6 / 3.8.1;4.1 多模块 import。
Groovy groovy-all 3.0.2 5 个 Java 文件 import groovy.util.logging.Slf4j,看起来是遗留 import。
Struts2 JSON plugin 2.5.30 xlyPersist/src/main/java/com/xly/utils/FeedPage.java;框架其他部分运行在 Spring MVC 上。
SnakeYAML / JDOM / validation-api 多版本 xlyFlow、xlyApi、xlyInterface、xlyMsg 等少量引用。

11. 硬件集成

Library Version 范围内源码引用
HslCommunication 本地 HslCommunication.jar 9 个文件引用,分布在 xlyPersist、xlyBusinessService、xlyPlc。xlyPlc 是 PLC 桥;见切片 6

12. 通知

Library Version 范围内源码引用
Aliyun DingTalk SDK com.aliyun:dingtalk 2.1.14 xlyMsg/src/main/java/com/xly/dingtalk/ 中 1 个文件;见通知
alibaba-dingtalk-service-sdk 2.0.0 xlyMsg 中 1 个文件 import com.dingtalk.api.*
Jeewx-API(微信) 本地 jeewx-api-1.3.2.jar xlyInterface 中 5 个文件引用。

13. 授权许可

Library Version 范围内源码引用
TrueLicense 本地 trueswing.jar + truexml.jar + turelicense.jar xlyBusinessService/src/main/java/com/xly/license/ 下 5 个文件;xlyEntry local yaml 中 License: 块默认 checkLic: false

14. 日志

Library Version 范围内源码引用
Logback logback-classic 1.2.3 5 个文件 import;配置在 xlyEntry/src/main/resources/logback-spring.xml
log4j 1.x 1.2.17 xlyFlow 中 1 个文件 import;Druid stat filter yaml 中也出现 filters: stat,log4j2

15. 构建与开发

Library Version 用途
Gradle wrapper 已提交 构建工具;见本地运行
Spring Boot Gradle plugin 2.2.5.RELEASE repo 根 build.gradle,构建可运行 WAR。
Spring Boot configuration processor 2.2.5.RELEASE xlyApi annotationProcessor,用于 @ConfigurationProperties IDE 元数据。

已声明但未发现范围内源码引用

以下库出现在 build.gradle 中,但在 xly-src/<in-scope module>/src/ 下未发现 Java import、HTML 模板引用或 yaml 属性绑定。它们可能是传递依赖、Spring Boot autoconfig 消费的库、已删除代码遗留,或只是冗余声明。

Library 声明位置 备注
Kaptcha、JNA、oshi-core、UserAgentUtils xlyFlow.build.gradle 未发现 import;分别用于验证码、原生访问、系统信息、UA 解析。
Barbecue、Gson、commons-pool2 xlyPersist.build.gradle 未发现 import;当前活跃条码路径是 Barcode4J + ZXing,JSON 路径是 FastJson + Jackson。
Baidu SDK xlyInterface.build.gradle 本地 jar 未发现 com.baidu import。
mchange-commons-java xlyFlow.build.gradle 未发现直接 import。
Springfox xlyInterface.build.gradle 未发现直接 Java import;通过 jar 静态资源提供 /swagger-ui.html,但没有 Docket bean。见 Webhook API

值得注意的版本偏差与本地 jar

细节
Shiro xlyPersist 为 1.3.2;xlyApixlyFlow 为 1.4.2。
FastJson xlyPersist / xlyApi 为 1.2.15;xlyFlow 为 1.2.60。
Hutool xlyPersist 为 5.6.5;xlyApi / xlyFlow 为 5.8.5。
Apache POI xlyPersist / xlyFlow 为 4.1.2;xlyApi 为 3.15。
Guava xlyPersist / xlyApi 为 18.0;xlyFlow 为 20.0。
commons-lang3 xlyPersist 为 3.6;xlyFlow 为 3.8.1。
Lombok xlyPersist / xlyFlow 为 1.18.8;xlyApi 为 1.18.20。
iText xlyPersist 同时声明 itextpdf 5.5.0 和 com.lowagie:itext 2.1.7。
Activiti 流程引擎 5.17.0(xlyPersist / xlyApi);rest-api 与 json-converter 6.0.0(xlyFlow)。见 Activiti 集成
本地 jar xlyPersist/src/main/java/lib/ 下有 Aspose、jacob、HslCommunication、QRCode、OLAP4J、JasperReports、EasyExcel 等;xlyFlowxlyInterface 下有 MSSQL / Oracle / Baidu / Jeewx jar;xlyBusinessService 下有 TrueLicense jar。
Spring Boot 2.2.5.RELEASE,固定在根 build.gradle plugin block,并由使用 starter 的各模块声明。

本清单有意不包含

  • plat 层(xlyPlat* 模块)及仅在其中声明的依赖;按首页说明属于范围外。
  • AI / LLM 库(xlyApi/build.gradle 中的 com.theokanning.openai-gpt3-java:service 0.11.1 和 com.unfbx:chatgpt-java 1.0.8),范围外。
  • xlyEntity/build.gradle 中声明的 MongoDB starter(spring-boot-starter-data-mongodb 2.2.5)。xlyEntity 中有 22 个 @Document 类,20 个名为 PLAT_*,另 2 个是 DIKE_TEST* 测试夹具。对范围内模块 grep MongoTemplate / MongoRepository 只发现 xlyPersist/.../dao/platmongo/BaseMongoDao.java(服务 plat 层);没有范围内模块调用 Mongo API。见首页范围说明
  • xlyFace,范围外。