# 技术栈 本页是**范围内**框架的依赖清单:11 个框架核心模块(`xlyEntry`、`xlyApi`、`xlyManage`、`xlyBusinessService`、`xlyPersist`、`xlyEntity`、`xlyFlow`、`xlyInterface`、`xlyMsg`、`xlyErpJmsProductor`、`xlyErpJmsConsumer`)、一个插件(`xlyPlc`),以及一个共享工具模块(`xlyPlatConstant`;尽管名字带 `Plat*`,但 `xlyPersist` 依赖其中的 `MultiThreadServer` 和 `TimeContant`)。 其他 plat 层模块(除 `xlyPlatConstant` 外的 `xlyPlat*`)、`xlyFace`(仍参与构建但不在文档范围内)和 AI 库均为[范围外](../../index.md),本页不列。 ## 如何读本页 两个列提供证据: - **位置**:声明该库为 `api(...)` 或 `implementation(...)` 的 `build.gradle` 文件。多数库声明在 `xlyPersist/build.gradle`,并传递到依赖 `xlyPersist` 的模块。 - **范围内源码引用**:在上述范围内模块中对 `xly-src//src/` 执行 `grep -rln ` 的文件计数,并给出代表路径。“未发现源码引用”表示该库已声明,但范围内模块的 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.gradle`、`xlyFlow/build.gradle` | 所有 `*ApplicationBoot.java` 类(`xlyEntry`、`xlyApi`、`xlyInterface`、`xlyPlc`、构建时的 `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: 8080`、`server.servlet.context-path: /xlyEntry`、`server.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(`xlyPersist`、`xlyFlow`)/ 1.18.20(`xlyApi`) | `xlyPersist/build.gradle`、`xlyApi/build.gradle`、`xlyFlow/build.gradle` | 19 个文件 import `lombok.*`。xlyApi 同时声明为 `implementation` 和 `annotationProcessor`。 | ## 2. 持久化 {#persistence} | Library | Version | 位置 | 范围内源码引用 | |---|---|---|---| | MyBatis | 2.1.2 (`mybatis-spring-boot-starter`) | `xlyPersist/build.gradle`、`xlyApi/build.gradle`、`xlyFlow/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.java`、`xlyApi/.../BaseController.java`。不在 xlyApi 之外使用。 | | MySQL Connector/J | 8.0.13 | `xlyPersist/build.gradle`、`xlyApi/build.gradle`、`xlyFlow/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.gradle`、`xlyInterface/build.gradle`、`xlyFlow/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.gradle`、`xlyApi/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.java`、`SlaveDataSourceConfig.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.gradle`、`xlyApi/build.gradle`、`xlyFlow/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.gradle`、`xlyApi/build.gradle`、`xlyFlow/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.gradle`、`xlyApi/build.gradle`、`xlyFlow/build.gradle` | 5 个文件 import `redis.clients.jedis`,包括 `xlyMsg/.../wechat/util/JedisMsgUtil.java`。 | | Guava | 18.0(`xlyPersist`、`xlyApi`);20.0(`xlyFlow`) | `xlyPersist/build.gradle`、`xlyApi/build.gradle`、`xlyFlow/build.gradle` | 8 个文件 import `com.google.common.*`。 | ## 4. 工作流与调度 | Library | Version | 位置 | 范围内源码引用 | |---|---|---|---| | Activiti Engine | 5.17.0 | `xlyPersist/build.gradle`、`xlyApi/build.gradle`;由 `xlyFlow` 消费 | 35 个文件 import `org.activiti.*`。与 6.0 modeler 库的版本偏差见 [Activiti 集成](activiti.md)。 | | 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.*`。见[消息](../../api-reference/messaging.md)。 | | 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.gradle`、`xlyFlow.build.gradle`;也由 starter 传递 | 2 个 xlyFlow Java 文件 import;modeler 模板在 `xlyFlow/src/main/resources/templates/`。 | | Freemarker | Spring starter 2.2.5 | `xlyPersist.build.gradle`、`xlyApi.build.gradle`、`xlyFlow.build.gradle` | 1 个 xlyFlow Java 文件 import。 | | Apache Batik | 1.8 / 1.7 | `xlyPersist.build.gradle`、`xlyFlow.build.gradle` | 1 个 xlyFlow 文件 import;modeler 静态资源也携带 Batik 资产。 | ## 7. 认证 | Library | Version | 位置 | 范围内源码引用 | |---|---|---|---| | Apache Shiro (`shiro-spring`) | 1.3.2(`xlyPersist`)/ 1.4.2(`xlyApi`、`xlyFlow`) | `xlyPersist.build.gradle`、`xlyApi.build.gradle`、`xlyFlow.build.gradle` | 6 个 Java 文件 import。未发现 `@ConfigurationProperties("shiro")` 或 `shiro.*` 属性绑定,尽管 xlyEntry local yaml 有 `shiro:` 块。框架 HTTP auth 模式见 [API 参考](../../api-reference/index.md)。 | | `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.gradle`、`xlyApi.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(`xlyPersist`、`xlyApi`)/ 1.2.60(`xlyFlow`) | 83 个文件 import。 | | Jackson | 2.9.7(xlyFlow 显式)+ Spring 传递依赖 | 22 个文件 import。 | | Hutool | 5.6.5(`xlyPersist`)/ 5.8.5(`xlyApi`、`xlyFlow`) | 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](../../slices/06-hardware.md)。 | ## 12. 通知 | Library | Version | 范围内源码引用 | |---|---|---| | Aliyun DingTalk SDK | `com.aliyun:dingtalk` 2.1.14 | `xlyMsg/src/main/java/com/xly/dingtalk/` 中 1 个文件;见[通知](../../api-reference/notifications.md)。 | | `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 | 已提交 | 构建工具;见[本地运行](running-locally.md)。 | | 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//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](../../api-reference/webhooks.md)。 | ## 值得注意的版本偏差与本地 jar | 项 | 细节 | |---|---| | Shiro | `xlyPersist` 为 1.3.2;`xlyApi` 和 `xlyFlow` 为 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 集成](activiti.md)。 | | 本地 jar | `xlyPersist/src/main/java/lib/` 下有 Aspose、jacob、HslCommunication、QRCode、OLAP4J、JasperReports、EasyExcel 等;`xlyFlow` 和 `xlyInterface` 下有 MSSQL / Oracle / Baidu / Jeewx jar;`xlyBusinessService` 下有 TrueLicense jar。 | | Spring Boot | 2.2.5.RELEASE,固定在根 `build.gradle` plugin block,并由使用 starter 的各模块声明。 | ## 本清单有意不包含 - plat 层(`xlyPlat*` 模块)及仅在其中声明的依赖;按[首页](../../index.md)说明属于范围外。 - 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。见[首页范围说明](../../index.md)。 - `xlyFace`,范围外。