diff --git a/.drone.yml b/.drone.yml index 011a32f00..0a8f0ae8b 100644 --- a/.drone.yml +++ b/.drone.yml @@ -30,7 +30,7 @@ steps: # # ========== deploy script ========== - bash scripts/prepareRelease.sh - - mvn clean deploy -P release -Dmaven.test.skip=true -B -V -T 1.5C -rf :shoulder-archetype-simple + - mvn clean deploy -P release -Dmaven.test.skip=true -B -V -T 1.5C # ========== deploy script end ========== - echo '========FINISHED CICD==========' # diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index eb8ea8e03..b9502e99a 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -1,22 +1,23 @@ # 如何贡献我的源代码 - 目前使用 Git 来控制程序版本,如果你想为 `Shoulder Framework` 贡献源代码,请先大致了解 Git 的使用方法。我们目前把项目托管在 `Gitee` 上,任何 Gitee 用户都可以向我们贡献代码。 - - 参与的方式很简单, - - `fork` 一份 `Shoulder Framework` 的代码到你的仓库中 - - 修改后提交,并向我们发起`pull request`申请 - - 我们会及时对代码进行审查并处理你的申请并。审查通过后,你的代码将被 `merge` 进我们的仓库中,这样你就会自动出现在贡献者名单里了。 - - 我们希望你贡献的代码遵循常见的编码规范(如符合阿里巴巴Java编码规范,IDEA中可以选中特定包右键`Reformat Code`),最好附带单元测试代码~ +`Shoulder` 欢迎各类型代码提交,不限于`优化代码格式`、`优化注释/JavaDoc`、`修复 BUG`、`新增功能` - -# 导航 +# 导航 +- [分支管理](#基础知识) - [分支管理](#分支管理) - [发布流程](#发布流程) +- [IED实用设置](#IED实用设置) + +## 基础知识 -这些部分均借鉴了 spring 的策略,并结合其他流行的方式。 + 目前使用 `Git` 来控制程序版本,如果你想为 `Shoulder Framework` 贡献源代码,请先大致了解 Git 的使用方法。我们目前把项目托管在 `Gitee` 上,任何 Gitee 用户都可以向我们贡献代码。 + 参与的方式很简单, + - `fork` 一份 `Shoulder Framework` 的代码到你的仓库中 + - 修改后提交,并向我们发起`pull request`申请 + - 我们会及时对代码进行审查并处理你的申请并。审查通过后,你的代码将被 `merge` 进我们的仓库中,这样你就会自动出现在贡献者名单里了。 + 我们希望你贡献的代码遵循常见的编码规范(如符合`阿里巴巴Java编码规范`,IDEA中可以选中特定包右键`Reformat Code`),最好附带单元测试代码~ ## 分支管理 @@ -27,18 +28,18 @@ - 开发分支(开发完毕合并至预发布分支 或 维护分支) - 新功能分支命名: feature-{issue编号} - + - 缺陷修复分支命名: bug-{issue编号} - + - 重构分支命名: refactor-{issue编号} - + - 改进分支命名: improvement-{issue编号} - 预发布分支(单人开发时,开发分支与预发布分支为同一分支) -v{x.y.0} +v{x.y.0} - 发布分支(同 tag): release-v{x.y.z} @@ -97,7 +98,7 @@ v{x.y.z}.RELEASE ---- -## IED 实用设置 +## IED实用设置 #### 部分代码跳过格式化(spring security dsl) IDEA:settings - Editor - Code Style - enable formatter marks in comments @@ -109,4 +110,4 @@ IDEA 可以为我们自动转化: - 勾选 `Transparent native-to-ascii conversion` gpg 发布错误 -https://blog.csdn.net/u011781521/article/details/130454386 \ No newline at end of file +https://blog.csdn.net/u011781521/article/details/130454386 diff --git a/README.md b/README.md index 7cf5611f2..bf1549128 100644 --- a/README.md +++ b/README.md @@ -13,129 +13,50 @@ Framework ![](https://img.shields.io/badge/Spring%20Boot%20Version-3.2.x-lightgrey.svg) ![](https://img.shields.io/badge/Spring%20Cloud%20Version-2023.0.x-lightgrey.svg) -一款 `Java WEB` / `微服务` 开发框架,在 `Spring Boot`、`Spring Cloud` 基础上实现了一些`可扩展`的常用功能,再次极大程度降低业务代码开发工作量。 +# 📖介绍 -- 示例工程 **See DEMO IN - **: [GitHub](https://github.com/ChinaLym/shoulder-framework-demo)、[Gitee](https://gitee.com/ChinaLym/shoulder-framework-demo) ---- +`Shoulder Framework` 是一个增强的 `Java WEB` / `微服务`开发框架,基于 Spring Boot,大幅简化了常用功能的实现。 + +- 示例工程 **See DEMO IN**: [GitHub](https://github.com/ChinaLym/shoulder-framework-demo)、[Gitee](https://gitee.com/ChinaLym/shoulder-framework-demo) ### Compare with `Spring Boot` -`Shoulder` 基于 `Spring Boot`,是 `Spring Boot` 的可拔插 `插件`。额外实现了常用能力,将 * -*[软件优雅设计与开发最佳实践](https://spec.itlym.cn)** 落地。 +`Shoulder Framework` 是 `Spring Boot` 的插件,融合了 **[软件优雅设计与开发最佳实践](https://spec.itlym.cn)** 和增强功能,在以下场景会比 `Spring Boot` 更好用! -- `毕设`、`外包` 场景:快速获得一些常用功能,加速开发! -- 将 `Shoulder` 作为公司/组织里的基础jar:许多组织内部往往有些统一编码规范,`Shoulder` - 实现了这项工作中重复的部分(jar包设计、编译、分发、模块化、提供默认实现等),极大程度上降低了实现难度; -- 基于 `Shoulder` 二次开发公司/组织里的基础jar:`Shoulder`对于规范处的实现类似 `Spring Boot`,均为`可扩展` +- `毕业设计`、`外包项目` 等场景:快速获得一些常用功能(AOP自动日志、AOP异常处理、低SQL、WEB安全、内嵌式DB/Redis、多语言等),加速开发! +- `微服务底座框架`:许多公司/组织内部往往有些统一编码规范,`Shoulder` + 实现了这项工作中重复的部分(jar包设计、编译、分发、模块化、提供默认实现等),基于`Shoulder`二次开放将极大程度上降低了实现难度; +- `内部框架开发`: 基于 `Shoulder` 二次开发公司/组织里的基础jar:`Shoulder`对于规范处的实现类似 `Spring Boot`,均为`可扩展` 的,可以非常方便的扩展、二次开发。 -### 功能 - -- `Spring Boot`一致的风格和使用体验 - - maven 工程模块命名为 `Spring Boot` 官方唯一指定风格 - - - 一处配置,处处默认:如字符集、语言、日期格式等,无需 `session.store.cluster=true crypto.store.cluster=true token.store.cluster=true` - ,仅需统一指定 `application.cluster=true`,一配置切换至集群模式,无状态化 - - 约定大于配置,配置生效优先级:`显式模块级配置 > 显式全局级配置 > 模块默认值 > 环境变量 > 系统默认值 > 未设置`) - - 体验同`Spring Boot`,就像`Shoulder`不存在一样,只有 `starter` 和几个配置,但节省了巨大工作量。 -- -- 错误码(契约精神) - - 错误可通过错误码溯源,提供表意、传递、追踪机制 - - 与日志记录、链路追踪、接口契约、消息传递打通,有全局自动化兜底处理机制 - -- 日志、异常(周到全面的异常设计) - - 基于业界标准的日志标准(base on `Slf4j`),无兼容问题,最小化配置、开箱即用,优化内部并发机制,并结合shoulder技术栈提供增强能力 - - `日志`、`异常`、`错误码` 打通、改造了 `lombok` 源码,提供简化开发注解,极大减少代码量 - - 统一错误码格式(也支持配置)、规范代码中的错误 - - 提供错误码实践方案,让 `错误码规范` 不在头疼 - - 提供全局`异常`、`错误码`处理 - -- 操作/审计日志(周到全面的溯源审核设计) - - 基于注解的使用:一个注解简单上手 - - 可扩展的输出格式:便于统一日志规范、提供默认推荐格式 - - 可扩展的目标源:无论是打印日志、保存至数据库、发送至Kafka,ELK等 - - 可扩展的记录流程:灵活编排记录步骤、动态填充 - - 日志策略上下文:自定义日志上下文传递方案,借鉴 Spring 的事务传播机制 - - 自动跨线程支持:异步业务场景,也不需要担心如何将一些变量跨线程传递 - - 异步与缓存:支持高并发场景异步与批量记录,提高系统的吞吐量 - -- 国际化与多语言翻译 - - 丝滑的翻译封装:在 Spring MessageSource 之上,添加了动态获取当前语言的方法 - - 完善的多语言支持:支持多种多语言文件存放规则,除spring/jdk默认的、以及基于语言标识目录名 - -- 完备的 session 管理 - - 包含存储、分析 - -- 先进完备的加密与安全 - - 不像其他第三方 jar ,仅提供只提供 `AES\RSA\ECC\SHA\MD5` 等公开算法的实现。`Shoulder` - 还在这之上提供了`安全` `可靠` `可生产落地` 的方案与实现,如 `多级密钥管理` - 、`加密算法平滑升级` - - 安全本地存储加解密:LocalCrypto,仅本应用/服务可以解密 - - 可配置的非对称密钥端点:无论是 `RSA`、`ECC` 还是国产化的 `SM2`,通过配置即刻实现切换;设置为集群时,自动将密钥存储转移至redis - - 数字摘要算法(哈希算法)、抗抵赖的签名算法 - - 简化使用的统一接口:不仅仅 byte[] ,也可以 String、Input/OutputStream 的加密 - - 大数据并行加解密:充分利用计算资源,提升加解密性能 - - 便于快速上手的门面工具类:只需要知道几个静态方法即可使用 - - 基于 `ECC`(可替换) 的密钥协商实现,提供了完整的密钥协商逻辑并在 spring boot 中自动激活 - - 安全传输方案(基于 `注解` ,无感知密钥协商,极简使用) - -- 通用业务代码封装 - - 数据库封装,如枚举与字段转换 - - 基本业务封装,增删改查系列 - -- 校验框架 - - 基于 `JSR` 规范,实现更多常用校验规则 - - 与异常、错误码、多语言打通,简化开发难度 - - 包含文件、熟悉、DTO - -- WEB 认证 & 安全 - - 常见 `WEB` 攻击的防御器:CSRF、XSS、SQL Inject - - Oauth2 授权 - - 认证服务器、资源服务器等(扩展 `Spring Security` ) - - 充分灵活的认证框架(扩展 `Spring Security` 迁移自 [learn-spring-security](https://gitee.com/ChinaLym/learn-spring-security)) - - 灵活可配置的验证码框架:只需一行配置,即可在任意接口增加验证码校验,极大提高代码复用度 - - 快速实现认证中心:`OAuth2`、`JWT Token` 发放、鉴权、认证、JWK端点、自定义的认证方式、支持 `SSO` 单点登录 - - 灵活的认证方式切换:一行配置在 Session、集群 Session、Token、JWT Token - -- 依赖管理 & 开箱即用 - - 与 `Spring Boot` 类似,无需再思考引入哪个版本,会不会冲突,`Shoulder` 管理了常用依赖的版本号,如 `spring-boot`、`spring-cloud`、`spring-cloud-alibaba` - - 自动依赖,当你引入 `shoulder-starter-web` 不需要再引入 `spring-boot-starter-web` 也不需要担心还要依赖什么 - - 最小化配置,提供了默认的配置项,自带建议配置。 - - 配置项支持 `IDE` 的自动提示 - -- 更多 - - **Java中性能最高**、灵活配置的**分布式、全局递增、唯一标识生成器(单节点持续高压场景为 twitter 雪花算法**200w倍+**、JDK UUID的 **120倍!**、百度开源算法的近 **60 倍!**)。 - 巧妙处理时钟回拨,突发峰值、持续高压,并支持配置与扩展。 - - 可扩展的生产级分布式锁:优雅处理持锁宕机、并发加锁、可重入;默认支持数据库(巧妙处理事务可见性)、内存(提供模拟器)、Redis、zookeeper... - - 可扩展的延迟任务 - - 几乎去SQL开发的设计 - - 类型转换(枚举 - int - String - json 自动互转、各类时间格式互转) - - 可动态调节,具备监控能力的线程池 - - 灵活的多环境配置 - - 标准可扩展的链路追踪(`Open Tracing`) - - 认证、注册、权限管理 - - 分布式的任务调度 - - 与 Spring Boot 天衣无缝的自动集成能力 - - 能力保证可扩展、可监控、可回滚(单独屏蔽下线) - - 提供使用demo、部分单元测试:提供优秀的应用案例,懒人可以直接复制代码即可。 - - **等你探索...** --- -# 快速开始 +# 🚀 快速开始 + +## 体验官方 Demo 通过简单的 **[示例工程](https://github.com/ChinaLym/shoulder-framework-demo/tree/master/demo1)**([github](https://github.com/ChinaLym/shoulder-framework-demo/tree/master/demo1) [gitee](https://gitee.com/ChinaLym/shoulder-framework-demo/tree/master/demo1)),快速感受 `Shoulder` 带来的优雅编码体验。 -### 自动创建 +## 通过 maven-archetype 创建新项目 -`Shoulder` 提供了 -maven [archetype](https://github.com/ChinaLym/shoulder-framework/tree/master/shoulder-archetype-simple) -,可通过该工程快速创建 +`Shoulder` 提供了 maven [archetype](https://github.com/ChinaLym/shoulder-framework/tree/master/shoulder-archetype-simple),可通过该工程快速创建。请确保您本地已经安装 `JDK17+`、`Maven` -### 在新的 Maven 项目中使用 +1. 打开终端或命令提示符。 +2. 运行以下命令来生成新的 Shoulder 项目: + +```shell +mvn archetype:generate \ + -DarchetypeGroupId=cn.itlym \ + -DarchetypeArtifactId=shoulder-archetype-simple \ + -DarchetypeVersion=0.8 \ + -DgroupId=com.yourcompany \ + -DartifactId=yourproject \ + -Dversion=1.0-SNAPSHOT +``` +## 手动创建新 Maven 项目 -可以直接使用以下 `pom.xml` +可以直接使用以下 `pom.xml`,与 Spring Boot 工程唯一区别就是 `pom.xml` 中 `parent` 不同 ```xml @@ -166,7 +87,7 @@ maven [archetype](https://github.com/ChinaLym/shoulder-framework/tree/master/sho ``` -### 在已有的工程中使用(不继承父类) +## 在已有的工程中使用(不继承shoulder-parent) 已经继承了其他父工程,如(`spring-boot-parent`)且不想修改,只需加入 `Shoulder` 的依赖清单,然后在 `dependency` 中引入想要的模块即可~ @@ -192,78 +113,15 @@ maven [archetype](https://github.com/ChinaLym/shoulder-framework/tree/master/sho ``` - --- -# 常见问题 - -### xxx功能的使用/扩展 - -首选要确定该能力是否是 `Shoulder` 提供的,不然方向错了,就白忙活啦~ (注:可以通过包路径、类路径来判断~) - -Shoulder提供的能力可以参见[使用手册]()(TODO wiki) - -`Shoulder` 自动引入并管理了 `Spring Boot` 的版本,但未屏蔽或改变 `Spring Boot` 用法,一些功能并不是 Shoulder 提供的,Shoulder仅仅是帮你引入咯~ -如 `Spring Boot`、`Spring Cloud` 等优秀第三方库为我们提供了大量能力(致敬),使用这些时可以去看他们官方的一手教程,或到搜索引擎搜索对应关键词。如 - -- shoulder Web 工程中如何使用添加自己的过滤器、拦截器 - - 过滤器、拦截器等的基本功能是 `Spring Boot` 提供的,应该搜索 `Spring Boot 自定义过滤器` 而不是 ~~`Shoulder 自定义过滤器`~~ -- shoulder Web 工程中如何访问静态资源文件 - - web 的基础功能是由`Spring Boot` 提供哒,所以这么搜索会更合适哟~ `Spring Boot 如何访问静态资源文件` - -### 使用中遇到问题、报错 - -当认为是 Shoulder 框架的 Bug 时可以在 `issure` 中描述你遇到的`问题`、`如何复现`、你尝试过的`排查与解决方式`,甚至可行的缺陷修复方案。 - -欢迎提交代码~ 以下提交都是可以的~ - -- 优化代码格式、完善注释、标准化`JavaDoc` -- 修复 BUG -- 添加功能 - -# 工程目录 & 模块划分 - -> 与 spring、spring-boot 的包模块划分、包命名策略相似(简化使用者学习成本) +# ❓常见问题 & FAQ -最外层的 shoulder-build 管理了 shoulder 的构建,包含了三个部分 +优先参见 [FAQ 文档](doc/faq.md) -- **shoulder-dependencies** 负责依赖版本管理 +更多: [功能介绍.md](doc/ability-intro.md)、[工程目录 & 模块划分](doc/module-intro.md)、[设计理念 & 发展路线](ROADMAP.MD) -- **shoulder-parent** 是 shoulder 所有功能模块的直接父类,负责管理他们的公共依赖、插件配置等,**使用者也可以直接继承该模块**。 - -- **shoulder-build** 包含 shoulder 的代码,其下面又按照用途分为两个模块。 - - - **shoulder-base**: 基础定义与功能模块,真正实现功能代码,但使用者一般不会直接引入。 - - **shoulder-xxx**: xxx模块代码(开发时可以把一个模块当作一个工程)。 - - ... - - - **shoulder-starters**: 带 `Spring Boot` 自动配置的开箱即用模块,并提供 `Shoulder` 功能的默认实现,简化使用者上手难度。 - - **shoulder-starter-xxx**: xxx模块的自动配置,供使用者直接引入。 - - ... - ---- - -# 设计 & 路线 - -> **shoulder** 复用/优化当前业界成熟的解决方案(站在巨人的肩膀上),将 `开源社区` 中优秀的实现带给使用者,给使用者一个肩膀! -> 为减少使用者的上手成本,在用法上借鉴了 `Spring Boot`,使用 `Shoulder` 就像使用 `Spring Boot` 的 `starter` 一样简单(开箱即用)! - -- 实现上参照了 **[软件优雅设计与开发最佳实践](https://spec.itlym.cn)** 中提到的内容,但没与它完全绑定,仅将该实践方案作为默认实现,实际中可替换、可二次开发。 -- 可制定自己团队/项目的规范,在 **Shoulder** 基础上增加自己个性化部分,即可快速实现自定义规范并获得常用的功能实现。 - -## 技术选择 - -喜欢引入新的优秀技术,但不盲目追捧,当且仅当有完整的实践方案 - -- 业界标准或绝对主流 -- 技术先进、可用于生产环境,且容易从原有的主流技术迁移 - -## **[软件优雅设计与开发最佳实践](https://spec.itlym.cn)** 是什么 - -一千开发手里有一千种实践之路,这一千条路中,`平坦的`(开发维护成本低)、`坎坷的`(开发维护成本高) 差别很大,使用业界有成熟的解决方案往往会**事半功倍**! -为保证 `代码性能` ,降低 `维护成本`、`开发成本`。**Shoulder** 还提供了`技术选型指导`和一定的`开发规范`,带你轻松踏上最佳实践之路![点击这里可以查看 Shoulder Framework 推荐的开发规约](https://doc.itlym.cn) - -## Road Map +# 🧭 Road Map `Shoulder` 希望做一个整套的可复用的平台(`PaaS`),使用者只需要做做自己的业务即可。整体格局如下 @@ -273,7 +131,7 @@ Shoulder提供的能力可以参见[使用手册]()(TODO wiki) - `Shoulder Platform` 共性业务平台,提供 `用户平台`、`支付平台`、`通知中心`、`业务网关`、`数据字典`、`全局ID生产器` 等基础、通用业务能力平台 - `Shoulder Platform SDK` 以 sdk 形式方便业务层对接使用。 -## 项目代码地址 +## 相关项目代码地址 | 项目 | 开源地址 | 说明 | |-----------------------------|---------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------| @@ -285,15 +143,20 @@ Shoulder提供的能力可以参见[使用手册]()(TODO wiki) | shoulder-lombok-idea-plugin | [github](https://github.com/ChinaLym/lombok-intellij-plugin)、[gitee](https://gitee.com/ChinaLym/lombok-intellij-plugin) | 在 `lombok-idea-plugin`之上,在 IDEA 中增加`@SLog`的编码提示,以更好的使用 `shoulder-lombok`(非必须,使用 shoulder-lombok 时推荐) | | Shoulder iPaaS | [github](https://github.com/ChinaLym/shoulder-ipaas)、[gitee](https://gitee.com/ChinaLym/shoulder-iPaaS) | iPaaS 平台,介绍了常见中间件、监控系统、私有基础平台如何部署 | -## 发行版本号说明 +# 版本变更记录 -采用 [主版本号.次版本号.修订号](https://semver.org/lang/zh-CN)([MAJOR.MINOR.PATCH](https://semver.org)) 的形式 +当前版本为 `0.8`,更多见 [CHANGELOG.MD](CHANGELOG.MD) -## 建议与反馈 +# ✉️ 建议与反馈 -感谢小伙伴们的 **[Star](https://gitee.com/ChinaLym/shoulder-framework/star)** / **Fork**,欢迎在 issue 交流,留下你的建议、期待的新功能等~ +感谢小伙伴们的 **[Star](https://gitee.com/ChinaLym/shoulder-framework/star)** 、 **Fork** 、 **PR**,欢迎使用 `issue` 或 [cn_lym@foxmai.com](mailto:cn_lym@foxmai.com) 交流,如 留下你的建议、期待的新功能等~ -欢迎 `fork` 并提交合并请求一起改善该框架 [合作开发流程与项目介绍](CONTRIBUTING.MD) +欢迎各类型代码提交,不限于`优化代码格式`、`优化注释/JavaDoc`、`修复 BUG`、`新增功能`,更多请参考 [如何贡献代码](CONTRIBUTING.MD) Shoulder 不求使用最广,而是致力于成为使用体验最好的开发框架,您任何的使用需求、建议、想法都可以留下来与我们沟通,Shoulder 将与您一起思考攻克疑难,助天下的开发者更好更安心得通过技术赋能业务!同时,利用业务疑难解决方案的积累反哺技术发展! + +### 关于作者 + +曾参与多次 Alibaba 核心系统重构,主导过多次 D11 级别大促保障,欢迎技术交流与简历投递~ +- 该项目为作者在业余时间独立开发和维护的个人项目,非阿里巴巴官方产品。 diff --git a/ROADMAP.MD b/ROADMAP.MD index 3fc11505f..d03173504 100644 --- a/ROADMAP.MD +++ b/ROADMAP.MD @@ -1,5 +1,13 @@ # Road Map 发展规划 +> **shoulder** 复用/优化当前业界成熟的解决方案(站在巨人的肩膀上),将 `开源社区` 中优秀的实现带给使用者,给使用者一个肩膀! +> 为减少使用者的上手成本,在用法上借鉴了 `Spring Boot`,使用 `Shoulder` 就像使用 `Spring Boot` 的 `starter` 一样简单(开箱即用)! + +- 实现上参照了 **[软件优雅设计与开发最佳实践](https://spec.itlym.cn)** 中提到的内容,但没与它完全绑定,仅将该实践方案作为默认实现,实际中可替换、可二次开发。 +- 可制定自己团队/项目的规范,在 **Shoulder** 基础上增加自己个性化部分,即可快速实现自定义规范并获得常用的功能实现。 + +## 诞生背景 + 14年spring boot 发布,15年逐渐流行,16年先锋队跟上,后续逐渐普及,2021 年,spring boot 已经成为 web 标配,spring cloud 也逐渐成熟稳定 但 spring boot 是面向所有场景的,实际开发中还有许多需要完善,shoulder 在此之外对 web 开发做了一些简化代码编写,利于工程维护, @@ -17,6 +25,12 @@ Google 等互联网顶尖公司已经探索 `ServiceMesh` 许久,虽然当前 ---- +## **[软件优雅设计与开发最佳实践](https://spec.itlym.cn)** 是什么 + +一千开发手里有一千种实践之路,这一千条路中,`平坦的`(开发维护成本低)、`坎坷的`(开发维护成本高) 差别很大,使用业界有成熟的解决方案往往会**事半功倍**! +为保证 `代码性能` ,降低 `维护成本`、`开发成本`。**Shoulder** 还提供了`技术选型指导`和一定的`开发规范`,带你轻松踏上最佳实践之路![点击这里可以查看 Shoulder Framework 推荐的开发规约](https://doc.itlym.cn) + + ## 展望未来 未来提供基础 docker 镜像,只需要依赖很轻的一层用于对接容器 sideCar 约定API 的 jar,中间件/依赖升级通过镜像方式分发。 @@ -29,10 +43,23 @@ Google 等互联网顶尖公司已经探索 `ServiceMesh` 许久,虽然当前 - 服务治理:服务注册、动态配置、发现、负载均衡、重试、熔断、限流、降级、故障注入、健康检查、实时监控、日志采集、链路追踪、统一应急接入、压测、同城/异地容灾 ---- -计划 +## 计划 - 生产/压测隔离【DONE】 - redis6已经发布,有客户端缓存相关涉及,lettuce6.x已经支持,但spring boot 中暂未支持,预计 spring boot 2.5+ 支持【DONE】 - 启动速度(CRaC,spring boot 3.2 2023.11才支持)、启动预热 https://docs.spring.io/spring-framework/reference/integration/checkpoint-restore.html - 默认容器由 alpaquita 替换 alpine,以获得更好的内存管理支持(musl-perf,JDK16后兼容)、支持 Graavl VN - redis Lettuce 6.3 修复了redis宕机会导致15分钟不可用(客户端无主动探活,问题链接未释放),netty-transport-native-epoll:4.1.65.Final:linux-x86_64,在 EPOLL 可用时;https://xie.infoq.cn/article/8d5ecb7b1bc9c84a35de43674 - JDK 21 https://www.oracle.com/java/technologies/downloads/#jdk21-windows + +--- +## 技术选型 + +喜欢引入新的优秀技术,但不盲目追捧,当且仅当有完整的实践方案 + +- 业界标准或绝对主流 +- 技术先进、可用于生产环境,且容易从原有的主流技术迁移 + +## 发行版本号说明 + +采用 [主版本号.次版本号.修订号](https://semver.org/lang/zh-CN)([MAJOR.MINOR.PATCH](https://semver.org)) 的形式 + diff --git a/doc/ability-intro.md b/doc/ability-intro.md new file mode 100644 index 000000000..59aa70029 --- /dev/null +++ b/doc/ability-intro.md @@ -0,0 +1,88 @@ +# 功能介绍 + +- `Spring Boot`一致的风格和使用体验 + - maven 工程模块命名为 `Spring Boot` 官方唯一指定风格 + - 一处配置,处处默认:如字符集、语言、日期格式等,无需 `session.store.cluster=true crypto.store.cluster=true token.store.cluster=true` ,仅需统一指定 `application.cluster=true`,一配置切换至集群模式,无状态化 + - 约定大于配置,配置生效优先级:`显式模块级配置 > 显式全局级配置 > 模块默认值 > 环境变量 > 系统默认值 > 未设置`) + - 体验同`Spring Boot`,就像`Shoulder`不存在一样,只有 `starter` 和几个配置,但节省了巨大工作量。 +- +- 错误码(契约精神) + - 错误可通过错误码溯源,提供表意、传递、追踪机制 + - 与日志记录、链路追踪、接口契约、消息传递打通,有全局自动化兜底处理机制 + +- 日志、异常(周到全面的异常设计) + - 基于业界标准的日志标准(base on `Slf4j`),无兼容问题,最小化配置、开箱即用,优化内部并发机制,并结合shoulder技术栈提供增强能力 + - `日志`、`异常`、`错误码` 打通、改造了 `lombok` 源码,提供简化开发注解,极大减少代码量 + - 统一错误码格式(也支持配置)、规范代码中的错误 + - 提供错误码实践方案,让 `错误码规范` 不在头疼 + - 提供全局`异常`、`错误码`处理 + +- 操作/审计日志(周到全面的溯源审核设计) + - 基于注解的使用:一个注解简单上手 + - 可扩展的输出格式:便于统一日志规范、提供默认推荐格式 + - 可扩展的目标源:无论是打印日志、保存至数据库、发送至Kafka,ELK等 + - 可扩展的记录流程:灵活编排记录步骤、动态填充 + - 日志策略上下文:自定义日志上下文传递方案,借鉴 Spring 的事务传播机制 + - 自动跨线程支持:异步业务场景,也不需要担心如何将一些变量跨线程传递 + - 异步与缓存:支持高并发场景异步与批量记录,提高系统的吞吐量 + +- 国际化与多语言翻译 + - 丝滑的翻译封装:在 Spring MessageSource 之上,添加了动态获取当前语言的方法 + - 完善的多语言支持:支持多种多语言文件存放规则,除spring/jdk默认的、以及基于语言标识目录名 + +- 完备的 session 管理 + - 包含存储、分析 + +- 先进完备的加密与安全 + - 不像其他第三方 jar ,仅提供只提供 `AES\RSA\ECC\SHA\MD5` 等公开算法的实现。`Shoulder` + 还在这之上提供了`安全` `可靠` `可生产落地` 的方案与实现,如 `多级密钥管理` + 、`加密算法平滑升级` + - 安全本地存储加解密:LocalCrypto,仅本应用/服务可以解密 + - 可配置的非对称密钥端点:无论是 `RSA`、`ECC` 还是国产化的 `SM2`,通过配置即刻实现切换;设置为集群时,自动将密钥存储转移至redis + - 数字摘要算法(哈希算法)、抗抵赖的签名算法 + - 简化使用的统一接口:不仅仅 byte[] ,也可以 String、Input/OutputStream 的加密 + - 大数据并行加解密:充分利用计算资源,提升加解密性能 + - 便于快速上手的门面工具类:只需要知道几个静态方法即可使用 + - 基于 `ECC`(可替换) 的密钥协商实现,提供了完整的密钥协商逻辑并在 spring boot 中自动激活 + - 安全传输方案(基于 `注解` ,无感知密钥协商,极简使用) + +- 通用业务代码封装 + - 数据库封装,如枚举与字段转换 + - 基本业务封装,增删改查系列 + +- 校验框架 + - 基于 `JSR` 规范,实现更多常用校验规则 + - 与异常、错误码、多语言打通,简化开发难度 + - 包含文件、熟悉、DTO + +- WEB 认证 & 安全 + - 常见 `WEB` 攻击的防御器:CSRF、XSS、SQL Inject + - Oauth2 授权 + - 认证服务器、资源服务器等(扩展 `Spring Security` ) + - 充分灵活的认证框架(扩展 `Spring Security` 迁移自 [learn-spring-security](https://gitee.com/ChinaLym/learn-spring-security)) + - 灵活可配置的验证码框架:只需一行配置,即可在任意接口增加验证码校验,极大提高代码复用度 + - 快速实现认证中心:`OAuth2`、`JWT Token` 发放、鉴权、认证、JWK端点、自定义的认证方式、支持 `SSO` 单点登录 + - 灵活的认证方式切换:一行配置在 Session、集群 Session、Token、JWT Token + +- 依赖管理 & 开箱即用 + - 与 `Spring Boot` 类似,无需再思考引入哪个版本,会不会冲突,`Shoulder` 管理了常用依赖的版本号,如 `spring-boot`、`spring-cloud`、`spring-cloud-alibaba` + - 自动依赖,当你引入 `shoulder-starter-web` 不需要再引入 `spring-boot-starter-web` 也不需要担心还要依赖什么 + - 最小化配置,提供了默认的配置项,自带建议配置。 + - 配置项支持 `IDE` 的自动提示 + +- 更多 + - **Java中性能最高**、灵活配置的**分布式、全局递增、唯一标识生成器(单节点持续高压场景为 twitter 雪花算法**200w倍+**、JDK UUID的 **120倍!**、百度开源算法的近 **60 倍!**)。 + 巧妙处理时钟回拨,突发峰值、持续高压,并支持配置与扩展。 + - 可扩展的生产级分布式锁:优雅处理持锁宕机、并发加锁、可重入;默认支持数据库(巧妙处理事务可见性)、内存(提供模拟器)、Redis、zookeeper... + - 可扩展的延迟任务 + - 几乎去SQL开发的设计 + - 类型转换(枚举 - int - String - json 自动互转、各类时间格式互转) + - 可动态调节,具备监控能力的线程池 + - 灵活的多环境配置 + - 标准可扩展的链路追踪(`Open Tracing`) + - 认证、注册、权限管理 + - 分布式的任务调度 + - 与 Spring Boot 天衣无缝的自动集成能力 + - 能力保证可扩展、可监控、可回滚(单独屏蔽下线) + - 提供使用demo、部分单元测试:提供优秀的应用案例,懒人可以直接复制代码即可。 + - **等你探索...** diff --git a/doc/faq.md b/doc/faq.md new file mode 100644 index 000000000..7a03b5261 --- /dev/null +++ b/doc/faq.md @@ -0,0 +1,20 @@ +# 🔍FAQ & 问题排查指南 + +## 👀1.确认问题 +**首先** 要确定该能力是否是 `Shoulder` 提供的,不然方向错了,就白忙活啦~ (注:可以通过包路径、类路径来判断~) + +`Shoulder` 提供的能力可以参见[功能介绍.md](ability-intro.md) + +## 🔥 2.非 Shoulder 问题(主要) + +`Shoulder` 自动引入并管理了 `Spring Boot` 的版本,但未屏蔽或改变 `Spring Boot` 用法,一些功能并不是 Shoulder 提供的,Shoulder仅仅是帮你引入咯~ +如 `Spring Boot`、`Spring Cloud` 等优秀第三方库为我们提供了大量能力(致敬),使用这些时可以去看他们官方的一手教程,或到搜索引擎搜索对应关键词。如 + +- shoulder Web 工程中如何使用添加自己的过滤器、拦截器 + - 过滤器、拦截器等的基本功能是 `Spring Boot` 提供的,应该搜索 `Spring Boot 自定义过滤器` 而不是 ~~`Shoulder 自定义过滤器`~~ +- shoulder Web 工程中如何访问静态资源文件 + - web 的基础功能是由`Spring Boot` 提供哒,所以这么搜索会更合适哟~ `Spring Boot 如何访问静态资源文件` + +## 🤝 3.Shoulder 自身问题 + +这类问题比较少,若您发现,请自豪得在 `ISSUE` 或 [向 cn_lym@foxmai.com 发送邮件](mailto:cn_lym@foxmai.com) 告诉我们你发现了一个,我们将收集 & 记录 & 确认问题,若需要解决则会尽快修复问题,感谢您的贡献! diff --git a/doc/module-intro.md b/doc/module-intro.md new file mode 100644 index 000000000..a5f633247 --- /dev/null +++ b/doc/module-intro.md @@ -0,0 +1,19 @@ +# 源码目录指南 & 模块划分 + +> 与 spring、spring-boot 的包模块划分、包命名策略相似(简化使用者学习成本) + +最外层的 shoulder-build 管理了 shoulder 的构建,包含了三个部分 + +- **shoulder-dependencies** 负责依赖版本管理 + +- **shoulder-parent** 是 shoulder 所有功能模块的直接父类,负责管理他们的公共依赖、插件配置等,**使用者也可以直接继承该模块**。 + +- **shoulder-build** 包含 shoulder 的代码,其下面又按照用途分为两个模块。 + + - **shoulder-base**: 基础定义与功能模块,真正实现功能代码,但使用者一般不会直接引入。 + - **shoulder-xxx**: xxx模块代码(开发时可以把一个模块当作一个工程)。 + - ... + + - **shoulder-starters**: 带 `Spring Boot` 自动配置的开箱即用模块,并提供 `Shoulder` 功能的默认实现,简化使用者上手难度。 + - **shoulder-starter-xxx**: xxx模块的自动配置,供使用者直接引入。 + - ... diff --git a/pom.xml b/pom.xml index bb8a74f9c..cc8c80377 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-framework - 0.8-SNAPSHOT + 0.8 4.0.0 pom diff --git a/shoulder-archetype-simple/pom.xml b/shoulder-archetype-simple/pom.xml index 80f5fc043..ae60562cc 100644 --- a/shoulder-archetype-simple/pom.xml +++ b/shoulder-archetype-simple/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-framework - 0.8-SNAPSHOT + 0.8 ../pom.xml diff --git a/shoulder-archetype-simple/src/main/resources/archetype-resources/pom.xml b/shoulder-archetype-simple/src/main/resources/archetype-resources/pom.xml index 65a8fb6be..da7c31f4e 100644 --- a/shoulder-archetype-simple/src/main/resources/archetype-resources/pom.xml +++ b/shoulder-archetype-simple/src/main/resources/archetype-resources/pom.xml @@ -6,7 +6,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ${groupId} @@ -19,7 +19,7 @@ 17 - 0.8-SNAPSHOT + 0.8 0x000b diff --git a/shoulder-build/pom.xml b/shoulder-build/pom.xml index 0f4a622d4..1cc111f84 100644 --- a/shoulder-build/pom.xml +++ b/shoulder-build/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-framework - 0.8-SNAPSHOT + 0.8 ../pom.xml diff --git a/shoulder-build/shoulder-base/pom.xml b/shoulder-build/shoulder-base/pom.xml index b06b74314..3a48780c1 100644 --- a/shoulder-build/shoulder-base/pom.xml +++ b/shoulder-build/shoulder-base/pom.xml @@ -6,12 +6,12 @@ cn.itlym shoulder-build - 0.8-SNAPSHOT + 0.8 ../pom.xml shoulder-base - 0.8-SNAPSHOT + 0.8 pom diff --git a/shoulder-build/shoulder-base/shoulder-api-doc/pom.xml b/shoulder-build/shoulder-base/shoulder-api-doc/pom.xml index 7658df785..0cadc290d 100644 --- a/shoulder-build/shoulder-base/shoulder-api-doc/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-api-doc/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-batch/pom.xml b/shoulder-build/shoulder-base/shoulder-batch/pom.xml index a2e5e9e05..13f27cfbc 100644 --- a/shoulder-build/shoulder-base/shoulder-batch/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-batch/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-cluster/pom.xml b/shoulder-build/shoulder-base/shoulder-cluster/pom.xml index 7e3665093..5b8247509 100644 --- a/shoulder-build/shoulder-base/shoulder-cluster/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-cluster/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-core/pom.xml b/shoulder-build/shoulder-base/shoulder-core/pom.xml index ea77ab4d7..1ebd67750 100644 --- a/shoulder-build/shoulder-base/shoulder-core/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-core/pom.xml @@ -6,7 +6,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml diff --git a/shoulder-build/shoulder-base/shoulder-crypto-negotiation/pom.xml b/shoulder-build/shoulder-base/shoulder-crypto-negotiation/pom.xml index 864ebc7bc..eb3a4d205 100644 --- a/shoulder-build/shoulder-base/shoulder-crypto-negotiation/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-crypto-negotiation/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-crypto/pom.xml b/shoulder-build/shoulder-base/shoulder-crypto/pom.xml index d510bab0c..36b6ed8e7 100644 --- a/shoulder-build/shoulder-base/shoulder-crypto/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-crypto/pom.xml @@ -6,7 +6,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml diff --git a/shoulder-build/shoulder-base/shoulder-data-db/pom.xml b/shoulder-build/shoulder-base/shoulder-data-db/pom.xml index 8093ca3e6..eeae527f0 100644 --- a/shoulder-build/shoulder-base/shoulder-data-db/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-data-db/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-http/pom.xml b/shoulder-build/shoulder-base/shoulder-http/pom.xml index a8154de99..a03a15f3e 100644 --- a/shoulder-build/shoulder-base/shoulder-http/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-http/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-monitor/pom.xml b/shoulder-build/shoulder-base/shoulder-monitor/pom.xml index 8ed2a19b3..29ad7172d 100644 --- a/shoulder-build/shoulder-base/shoulder-monitor/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-monitor/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-operation-log/pom.xml b/shoulder-build/shoulder-base/shoulder-operation-log/pom.xml index e99b66f3d..8e200b4f1 100644 --- a/shoulder-build/shoulder-base/shoulder-operation-log/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-operation-log/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-security-code/pom.xml b/shoulder-build/shoulder-base/shoulder-security-code/pom.xml index 9ac322b34..dedebdce1 100644 --- a/shoulder-build/shoulder-base/shoulder-security-code/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-security-code/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-security/pom.xml b/shoulder-build/shoulder-base/shoulder-security/pom.xml index 4be3a6494..c3956eb4f 100644 --- a/shoulder-build/shoulder-base/shoulder-security/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-security/pom.xml @@ -6,7 +6,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml diff --git a/shoulder-build/shoulder-base/shoulder-validation/pom.xml b/shoulder-build/shoulder-base/shoulder-validation/pom.xml index 0508765ae..df165dc6f 100644 --- a/shoulder-build/shoulder-base/shoulder-validation/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-validation/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-base/shoulder-web/pom.xml b/shoulder-build/shoulder-base/shoulder-web/pom.xml index 0b9eef013..3e6f2db7e 100644 --- a/shoulder-build/shoulder-base/shoulder-web/pom.xml +++ b/shoulder-build/shoulder-base/shoulder-web/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-plugins/pom.xml b/shoulder-build/shoulder-plugins/pom.xml index db0278780..585cc7bb1 100644 --- a/shoulder-build/shoulder-plugins/pom.xml +++ b/shoulder-build/shoulder-plugins/pom.xml @@ -6,12 +6,12 @@ cn.itlym shoulder-build - 0.8-SNAPSHOT + 0.8 ../pom.xml shoulder-plugins - 0.8-SNAPSHOT + 0.8 pom diff --git a/shoulder-build/shoulder-plugins/shoulder-ext-autoconfiguration/pom.xml b/shoulder-build/shoulder-plugins/shoulder-ext-autoconfiguration/pom.xml index 711fafffa..a61e72a20 100644 --- a/shoulder-build/shoulder-plugins/shoulder-ext-autoconfiguration/pom.xml +++ b/shoulder-build/shoulder-plugins/shoulder-ext-autoconfiguration/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-plugins/shoulder-ext-comment/pom.xml b/shoulder-build/shoulder-plugins/shoulder-ext-comment/pom.xml index 4929d58e8..bda99f867 100644 --- a/shoulder-build/shoulder-plugins/shoulder-ext-comment/pom.xml +++ b/shoulder-build/shoulder-plugins/shoulder-ext-comment/pom.xml @@ -6,7 +6,7 @@ cn.itlym shoulder-plugins - 0.8-SNAPSHOT + 0.8 shoulder-ext-comment @@ -14,4 +14,4 @@ - \ No newline at end of file + diff --git a/shoulder-build/shoulder-plugins/shoulder-ext-common/pom.xml b/shoulder-build/shoulder-plugins/shoulder-ext-common/pom.xml index 1ee19d28f..221d60a6f 100644 --- a/shoulder-build/shoulder-plugins/shoulder-ext-common/pom.xml +++ b/shoulder-build/shoulder-plugins/shoulder-ext-common/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-plugins/shoulder-ext-config/pom.xml b/shoulder-build/shoulder-plugins/shoulder-ext-config/pom.xml index ccbcfba0d..c0931e32e 100644 --- a/shoulder-build/shoulder-plugins/shoulder-ext-config/pom.xml +++ b/shoulder-build/shoulder-plugins/shoulder-ext-config/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-plugins/shoulder-ext-dictionary/pom.xml b/shoulder-build/shoulder-plugins/shoulder-ext-dictionary/pom.xml index e35f17683..5f5a3f9ae 100644 --- a/shoulder-build/shoulder-plugins/shoulder-ext-dictionary/pom.xml +++ b/shoulder-build/shoulder-plugins/shoulder-ext-dictionary/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/pom.xml b/shoulder-build/shoulder-starters/pom.xml index c83e408b8..553c5d14d 100644 --- a/shoulder-build/shoulder-starters/pom.xml +++ b/shoulder-build/shoulder-starters/pom.xml @@ -6,7 +6,7 @@ cn.itlym shoulder-build - 0.8-SNAPSHOT + 0.8 ../pom.xml diff --git a/shoulder-build/shoulder-starters/shoulder-autoconfiguration/pom.xml b/shoulder-build/shoulder-starters/shoulder-autoconfiguration/pom.xml index b23ea06e7..f6aa5560e 100644 --- a/shoulder-build/shoulder-starters/shoulder-autoconfiguration/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-autoconfiguration/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml diff --git a/shoulder-build/shoulder-starters/shoulder-starter-auth-server/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-auth-server/pom.xml index 3b18cbfc4..24a910987 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-auth-server/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-auth-server/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-auth-session/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-auth-session/pom.xml index bfbcb779f..a63d10c16 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-auth-session/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-auth-session/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-auth-token/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-auth-token/pom.xml index ea1014c57..0e5b2c6b4 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-auth-token/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-auth-token/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-beanmap/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-beanmap/pom.xml index f21439a44..ac82ca5ff 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-beanmap/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-beanmap/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-crypto/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-crypto/pom.xml index b4f20befa..9317320a1 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-crypto/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-crypto/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-monitor/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-monitor/pom.xml index bafd460b0..27f6b6a17 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-monitor/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-monitor/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-mysql/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-mysql/pom.xml index 689c703e3..8d940af9d 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-mysql/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-mysql/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-operation-log/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-operation-log/pom.xml index 519b1bcf1..848ae4f8a 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-operation-log/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-operation-log/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-security-code/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-security-code/pom.xml index 61cdcfea8..c05003d29 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-security-code/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-security-code/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter-web/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter-web/pom.xml index d7d446ed3..9cdd8f55a 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter-web/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter-web/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-build/shoulder-starters/shoulder-starter/pom.xml b/shoulder-build/shoulder-starters/shoulder-starter/pom.xml index 0508a4953..445f55e76 100644 --- a/shoulder-build/shoulder-starters/shoulder-starter/pom.xml +++ b/shoulder-build/shoulder-starters/shoulder-starter/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-parent - 0.8-SNAPSHOT + 0.8 ../../../shoulder-parent/pom.xml 4.0.0 diff --git a/shoulder-dependencies/pom.xml b/shoulder-dependencies/pom.xml index 4a0418b8f..14397970b 100644 --- a/shoulder-dependencies/pom.xml +++ b/shoulder-dependencies/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-framework - 0.8-SNAPSHOT + 0.8 4.0.0 @@ -16,7 +16,7 @@ 0.1 - 0.8-SNAPSHOT + 0.8 diff --git a/shoulder-parent/pom.xml b/shoulder-parent/pom.xml index 2dcf39cf1..c68da9b63 100644 --- a/shoulder-parent/pom.xml +++ b/shoulder-parent/pom.xml @@ -5,7 +5,7 @@ cn.itlym shoulder-framework - 0.8-SNAPSHOT + 0.8 4.0.0 pom @@ -45,7 +45,7 @@ cn.itlym shoulder-dependencies - 0.8-SNAPSHOT + 0.8 pom import @@ -392,7 +392,7 @@ ${sonar-maven-plugin.version} - + org.codehaus.mojo versions-maven-plugin