## 项目 [mjava](https://mc.100ali.com/) 标准化后端接口, 自用脚手架封装, mc 之 java-mcli 系列 代号 mjava ### 运行 1. *若是首次拉取项目 - 先执行主项目 java-mcli install, 获取 mjava 包依赖, 且在关联 maven 内生成项目结构: 否则子项目可运行但打包报错 - maven 内可删除其他子项目, 保留 java-mcli 与 mjava 目录即可. 注意 mjava pom 需要配置为基础包, 否则关联子项目打包报错 2. QueryDSL: 尽量不使用 package, 会生产 jar 文件 - 说明: 项目在 compile 会执行 apt-maven-plugin 插件, 将 @Entity 注解类, 添加 Q 前缀, 存放到 target 下 generated-source 目录 - 使用: 若项目使用了 DSL, 先执行 mjava compile, 获取 BaseDTO 转 QBaseDTO. 再执行当前项目 compile, 获取 Q... 类型安全的实体查询类 - *实体若不直接在 com.malk 下, 可声明继承id, 避免编辑器提示 [不加也不影响编译以及运行]. 若是执行 package, 会先执行 compile 3. *启动文件 Boot - JPA 已配置扫描基础路径, 涉及子项目也能注册到, 避免启动报错 - 子项目 Boot 配置 @SpringBootApplication(scanBasePackages = {"com.malk"}), 扫描公共模块 4. 静态资源映射 - 静态资源读取是 target 内容, 无需使用 package, 使用 compile 即可, 不会生产 jar 文件 - mjava 已配置映射路径, 优先读取子项目对应路径内容, 若不存在则会读取 mjava.jar 路径内容, 未匹配则会 404 5. *环境变量: [包含其它文件] - 若子项目没有指定, mjava 内存在的文件, 则会加载 mjava 环境文件 - 若子项目存在同名文件, 则会全量覆盖, 以子项目为准. 仅需配置对应环境即可 6. 代理配置 - 内网穿透详见, `remark.md` - nginx 配置可参考 `nginx` 文件夹 7. pom 特别说明 - 目前配置全部子项目均可独立运行, 需要两个注意事项 - 第一: mjava 发布作为基础包提供, 注释 pom 内 executions 再执行 install 到本地 maven. 若开启即可作为独立 jar 运行 - 第二: 若关联 mjava 需要有与之相同的依赖, 否则调试可运行, 打包报错. 为了避免重复添加, 将 mjava 依赖直接添加到主项目 pom 上 - 项目被依赖 mjava 是通过 jar, 修改后执行 install 后关联项目才能获取到更新 [保留 mjava 是为了开发效率, 请勿随意修改] 8. 关于mjs - 本地 js-mcli: http://127.0.0.1:7001/dist/mjs.js - 本地 java-mcli: http://localhost:9001/dev/mjs/mjs.js - 本地 nginx: https://mc.100ali.com/dev/mjs/mjs.min.js - 特别说明: 先读取当前子项目的配置, 若依赖 mjava, 当前子项目没有该文件会继续读取 mjava 配置 ### 功能 快速开发底座, 集成三方平台标准化接口和曹操作逻辑 目前对接的三方平台有: 钉钉, 宜搭, 用友u8\yonsuite, 飞书平台 ### 技术 1. 并发和异步实现 `@Async` 2. 函数式编程 `Lambda` 3. 入参校验配置 `@Validated` 注解 4. 统一错误拦截 `CatchException` 类, 通用返回和报错格式 5. 数据库操作 `jpa`, `QueryDSL` 工具 6. JSON数据操作 `fastjson` 阿里巴巴 7. 工具集: `commons-lang3`, `hutool-all` 8. 基于 `winsw`, 在 `windows` 服务器部署能力 9. 通用网络请求 `UtilHttp`, 上传下载, post和get请求 10. 标准导入导出, 导入基于 `EastExcel`, 做了 `Lambda` 封装. 导出可用基于 `EasyExcel` 或 `POI` 11. 三方接口, 统一的Toke过期时间管理, 避免限流和无效token 12. 通用日志, 环境变量配置, 实现主子项目解耦. 当前每一个子项目对应一个客户, 子项目 `mjava` 也可独立部署, 提供平台通用接口服务 13. ### 配置 1. 通用路径 - 日志路径: /Users/malk/server/_Tool/var/mjava/log - 文件路径: Users/malk/server/_Tool/var/mjava/tmp 2. 超时 - nginx:如pass_proxy 配置超时5分钟 - web:设置超时5分钟 - server:设置超时5分钟 `timeOut` - server: 异步线程批量等待超时为10分钟 `timeAwait`
> 20220529 malk
next maven 私服 1. 暂未配置 deploy 3. 福氏nginx直接监听端口, 实现https 4. 当前子项目都依赖Tomcat, 导致jar过大, 是不是考虑弄一个通用docker > update 1. 新增jsp 2. 新增swagger 3. 新增webservice