@llryiop/avatar-boot-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +309 -0
- package/bin/cli.js +3 -0
- package/docs/plans/2026-03-12-avatar-boot-cli-design.md +73 -0
- package/docs/plans/2026-03-12-avatar-boot-cli-plan.md +681 -0
- package/package.json +28 -0
- package/src/index.js +78 -0
- package/src/prompts.js +78 -0
- package/src/template.js +37 -0
- package/src/transform.js +172 -0
- package/src/utils.js +34 -0
- package/templates/.claude/rules/architecture-redlines.md +146 -0
- package/templates/.claude/rules/code-review-standards.md +137 -0
- package/templates/.claude/rules/coding-standards.md +56 -0
- package/templates/.claude/rules/git-commit.md +59 -0
- package/templates/.claude/rules/layered-architecture.md +201 -0
- package/templates/.claude/rules/mybatis-plus.md +263 -0
- package/templates/.claude/rules/tech-stack.md +41 -0
- package/templates/.claude/rules/version.md +467 -0
- package/templates/.claude/settings.local.json +18 -0
- package/templates/.claude/skills/ai-tool-guide/SKILL.md +314 -0
- package/templates/.claude/skills/api-design/SKILL.md +200 -0
- package/templates/.claude/skills/api-doc-generator/SKILL.md +380 -0
- package/templates/.claude/skills/api-service-module-creator/SKILL.md +1114 -0
- package/templates/.claude/skills/avatar-boot-starter-feign/SKILL.md +243 -0
- package/templates/.claude/skills/avatar-boot-starter-job/SKILL.md +437 -0
- package/templates/.claude/skills/avatar-boot-starter-kafka/SKILL.md +580 -0
- package/templates/.claude/skills/avatar-boot-starter-mysql/SKILL.md +572 -0
- package/templates/.claude/skills/avatar-boot-starter-nacos/SKILL.md +901 -0
- package/templates/.claude/skills/avatar-boot-starter-oss/SKILL.md +594 -0
- package/templates/.claude/skills/avatar-boot-starter-redis/SKILL.md +586 -0
- package/templates/.claude/skills/avatar-boot-starter-rocketmq/SKILL.md +662 -0
- package/templates/.claude/skills/avatar-boot-starter-web/SKILL.md +1007 -0
- package/templates/.claude/skills/changelog-generator/SKILL.md +114 -0
- package/templates/.claude/skills/code-review/SKILL.md +239 -0
- package/templates/.claude/skills/crud-generator/SKILL.md +824 -0
- package/templates/.claude/skills/database-design/SKILL.md +377 -0
- package/templates/.claude/skills/deployment-config/SKILL.md +277 -0
- package/templates/.claude/skills/incident-analysis/SKILL.md +241 -0
- package/templates/.claude/skills/integration-test-generator/SKILL.md +496 -0
- package/templates/.claude/skills/prompt-engineering/SKILL.md +249 -0
- package/templates/.claude/skills/requirement-management/SKILL.md +244 -0
- package/templates/.claude/skills/security-audit/SKILL.md +330 -0
- package/templates/.claude/skills/test-case-design/SKILL.md +257 -0
- package/templates/.claude/skills/testing-workflow/SKILL.md +68 -0
- package/templates/.claude/skills/troubleshooting/SKILL.md +240 -0
- package/templates/CLAUDE.md +173 -0
- package/templates/README.md +303 -0
- package/templates/avatar-scaffold-api/pom.xml +41 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/api/LoginFeignClient.java +40 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/constant/LoginConstant.java +21 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/request/LoginRequest.java +17 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/request/RefreshTokenRequest.java +14 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/response/LoginResponse.java +31 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/dto/response/TokenInfoResponse.java +25 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/enums/LoginTypeEnum.java +23 -0
- package/templates/avatar-scaffold-api/src/main/java/com/iflytek/avatar/login/exception/LoginException.java +23 -0
- package/templates/avatar-scaffold-service/k8s-app/Dockerfile +14 -0
- package/templates/avatar-scaffold-service/k8s-app/Dockerfile-arm64 +14 -0
- package/templates/avatar-scaffold-service/packaging/assembly.xml +16 -0
- package/templates/avatar-scaffold-service/pom.xml +150 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/Application.java +21 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/config/LoginConfig.java +20 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/controller/LoginController.java +37 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/converter/LoginConverter.java +54 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/feign/DemoFeign.java +21 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/entity/UserLoginEntity.java +33 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/entity/UserTokenEntity.java +39 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/repository/mapper/UserLoginMapper.java +20 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/service/LoginService.java +22 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/service/impl/LoginServiceImpl.java +43 -0
- package/templates/avatar-scaffold-service/src/main/java/com/iflytek/avatar/login/utils/LoginUtils.java +31 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-dev.yaml +29 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-local.yaml +61 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-prod.yaml +28 -0
- package/templates/avatar-scaffold-service/src/main/resources/application-test.yaml +28 -0
- package/templates/avatar-scaffold-service/src/main/resources/application.yaml +12 -0
- package/templates/pom.xml +98 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
# 依赖版本使用规则
|
|
2
|
+
|
|
3
|
+
> 本规则适用于所有上游服务
|
|
4
|
+
>
|
|
5
|
+
> **强制执行级别**: 🔴 必须遵守 | 🟡 强烈建议 | 🟢 推荐
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 零、Avatar Boot 组件使用规则(架构基础)
|
|
10
|
+
|
|
11
|
+
### 🔴 核心原则:禁止直接引用 Spring Boot 原生组件
|
|
12
|
+
|
|
13
|
+
**强制规则:**
|
|
14
|
+
1. ❌ **禁止**直接引用 Spring Boot、Spring Cloud 原生 starter
|
|
15
|
+
2. ✅ **必须**使用 Avatar Boot 封装的 starter 组件
|
|
16
|
+
3. ✅ **必须**配置 iFlytek Maven 仓库
|
|
17
|
+
|
|
18
|
+
### 🔴 可用的 Avatar Boot 组件清单
|
|
19
|
+
|
|
20
|
+
项目中**必须且只能**使用以下 Avatar Boot 组件:
|
|
21
|
+
|
|
22
|
+
| 组件名称 | 用途 | 说明 |
|
|
23
|
+
|---------|------|------|
|
|
24
|
+
| `avatar-boot-dependency` | 版本管理 BOM | 统一管理所有依赖版本 |
|
|
25
|
+
| `avatar-boot-parent` | 父 POM | 提供构建配置和插件管理 |
|
|
26
|
+
| `avatar-boot-core` | 核心功能 | 提供基础工具类和通用功能 |
|
|
27
|
+
| `avatar-boot-starter-web` | Web 服务 | 替代 `spring-boot-starter-web` |
|
|
28
|
+
| `avatar-boot-starter-nacos` | 服务注册与配置 | Nacos 集成 |
|
|
29
|
+
| `avatar-boot-starter-redis` | Redis 缓存 | 替代 `spring-boot-starter-data-redis` |
|
|
30
|
+
| `avatar-boot-starter-mysql` | MySQL 数据库 | 替代 `spring-boot-starter-data-jpa` |
|
|
31
|
+
| `avatar-boot-starter-kafka` | Kafka 消息队列 | 替代 `spring-boot-starter-kafka` |
|
|
32
|
+
| `avatar-boot-starter-oss` | 对象存储 | OSS 文件存储集成 |
|
|
33
|
+
| `avatar-boot-starter-feign` | HTTP 客户端 | 替代 `spring-cloud-starter-openfeign` |
|
|
34
|
+
| `avatar-boot-ai` | AI 能力 | Spring AI 集成 |
|
|
35
|
+
| `avatar-boot-starter-rocketmq` | RocketMQ 消息队列 | RocketMQ 集成 |
|
|
36
|
+
|
|
37
|
+
### 🔴 必须配置的 Maven 仓库
|
|
38
|
+
|
|
39
|
+
在项目根 `pom.xml` 或 `settings.xml` 中**必须**配置以下仓库:
|
|
40
|
+
|
|
41
|
+
```xml
|
|
42
|
+
<repositories>
|
|
43
|
+
<repository>
|
|
44
|
+
<id>mvn-repo</id>
|
|
45
|
+
<name>iFlytek Maven Repository</name>
|
|
46
|
+
<url>https://artifacts.iflytek.com/artifactory/mvn-repo/</url>
|
|
47
|
+
<layout>default</layout>
|
|
48
|
+
</repository>
|
|
49
|
+
</repositories>
|
|
50
|
+
|
|
51
|
+
<pluginRepositories>
|
|
52
|
+
<pluginRepository>
|
|
53
|
+
<id>mvn-repo</id>
|
|
54
|
+
<name>iFlytek Maven Repository</name>
|
|
55
|
+
<url>https://artifacts.iflytek.com/artifactory/mvn-repo/</url>
|
|
56
|
+
</pluginRepository>
|
|
57
|
+
</pluginRepositories>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### ❌ 禁止的依赖声明
|
|
61
|
+
|
|
62
|
+
```xml
|
|
63
|
+
<!-- ❌ 错误:直接引用 Spring Boot 原生 starter -->
|
|
64
|
+
<dependency>
|
|
65
|
+
<groupId>org.springframework.boot</groupId>
|
|
66
|
+
<artifactId>spring-boot-starter-web</artifactId>
|
|
67
|
+
</dependency>
|
|
68
|
+
|
|
69
|
+
<!-- ❌ 错误:直接引用 Spring Cloud starter -->
|
|
70
|
+
<dependency>
|
|
71
|
+
<groupId>org.springframework.cloud</groupId>
|
|
72
|
+
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
|
73
|
+
</dependency>
|
|
74
|
+
|
|
75
|
+
<!-- ❌ 错误:直接引用 Spring Data Redis -->
|
|
76
|
+
<dependency>
|
|
77
|
+
<groupId>org.springframework.boot</groupId>
|
|
78
|
+
<artifactId>spring-boot-starter-data-redis</artifactId>
|
|
79
|
+
</dependency>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### ✅ 正确的依赖声明
|
|
83
|
+
|
|
84
|
+
```xml
|
|
85
|
+
<!-- ✅ 正确:使用 Avatar Boot 封装的 starter -->
|
|
86
|
+
<dependency>
|
|
87
|
+
<groupId>com.iflytek.springboot</groupId>
|
|
88
|
+
<artifactId>avatar-boot-starter-web</artifactId>
|
|
89
|
+
</dependency>
|
|
90
|
+
|
|
91
|
+
<dependency>
|
|
92
|
+
<groupId>com.iflytek.springboot</groupId>
|
|
93
|
+
<artifactId>avatar-boot-starter-feign</artifactId>
|
|
94
|
+
</dependency>
|
|
95
|
+
|
|
96
|
+
<dependency>
|
|
97
|
+
<groupId>com.iflytek.springboot</groupId>
|
|
98
|
+
<artifactId>avatar-boot-starter-redis</artifactId>
|
|
99
|
+
</dependency>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 🟡 架构层次说明
|
|
103
|
+
|
|
104
|
+
Avatar Boot 采用三层架构:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
avatar-boot (聚合 POM)
|
|
108
|
+
├── avatar-boot-dependency (BOM - 版本管理)
|
|
109
|
+
│ └── 定义所有依赖的版本号
|
|
110
|
+
├── avatar-boot-parent (父 POM - 构建配置)
|
|
111
|
+
│ └── 导入 avatar-boot-dependency BOM
|
|
112
|
+
│ └── 定义构建插件和编译配置
|
|
113
|
+
└── avatar-boot-starter-* (功能模块)
|
|
114
|
+
└── 继承 avatar-boot (聚合 POM)
|
|
115
|
+
└── 封装 Spring Boot 原生功能
|
|
116
|
+
└── 添加企业级增强功能
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**关键规则:**
|
|
120
|
+
- 业务服务模块**必须**继承 `avatar-boot` 或 `avatar-boot-parent`
|
|
121
|
+
- 业务服务模块**禁止**直接继承 `spring-boot-starter-parent`
|
|
122
|
+
- 所有依赖版本**必须**由 `avatar-boot-dependency` 统一管理
|
|
123
|
+
|
|
124
|
+
### 🔴 违规检查命令
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# 检查是否直接引用了 Spring Boot 原生 starter
|
|
128
|
+
find . -name "pom.xml" -exec grep -l "spring-boot-starter-web\|spring-boot-starter-data-redis\|spring-cloud-starter-openfeign" {} \;
|
|
129
|
+
|
|
130
|
+
# 检查是否配置了 iFlytek 仓库
|
|
131
|
+
grep -r "artifacts.iflytek.com" pom.xml settings.xml
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 一、基础环境要求
|
|
137
|
+
|
|
138
|
+
### 🔴 必须使用的版本
|
|
139
|
+
|
|
140
|
+
| 组件 | 版本 | 原因 |
|
|
141
|
+
|------|------|------|
|
|
142
|
+
| Java | 21 | Spring Boot 3.5.3 要求 Java 17+,使用 Java 21 获得最新特性和性能优化 |
|
|
143
|
+
| Maven | 3.8.6+ | 支持 Java 21 和现代 Maven 特性 |
|
|
144
|
+
| Maven Compiler Plugin | 3.13.0 | 支持 Java 21 编译 |
|
|
145
|
+
|
|
146
|
+
### ❌ 禁止使用的版本
|
|
147
|
+
|
|
148
|
+
- Java 8, 11, 17(Spring Boot 3.x 虽然支持 17,但项目统一使用 21)
|
|
149
|
+
- Maven 3.6.x 及以下(不完全支持 Java 21)
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 二、包命名空间规则
|
|
154
|
+
|
|
155
|
+
### 🔴 必须使用 Jakarta 命名空间
|
|
156
|
+
|
|
157
|
+
Spring Boot 3.x 已全面迁移到 Jakarta EE 9+,必须使用 `jakarta.*` 包:
|
|
158
|
+
|
|
159
|
+
```java
|
|
160
|
+
// ✅ 正确
|
|
161
|
+
import jakarta.servlet.http.HttpServletRequest;
|
|
162
|
+
import jakarta.validation.constraints.NotNull;
|
|
163
|
+
import jakarta.persistence.Entity;
|
|
164
|
+
|
|
165
|
+
// ❌ 错误
|
|
166
|
+
import javax.servlet.http.HttpServletRequest;
|
|
167
|
+
import javax.validation.constraints.NotNull;
|
|
168
|
+
import javax.persistence.Entity;
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 🟡 迁移检查清单
|
|
172
|
+
|
|
173
|
+
- [ ] `javax.servlet.*` → `jakarta.servlet.*`
|
|
174
|
+
- [ ] `javax.validation.*` → `jakarta.validation.*`
|
|
175
|
+
- [ ] `javax.persistence.*` → `jakarta.persistence.*`
|
|
176
|
+
- [ ] `javax.annotation.*` → `jakarta.annotation.*`
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 三、依赖声明规则
|
|
181
|
+
|
|
182
|
+
### 🔴 版本管理规则
|
|
183
|
+
|
|
184
|
+
1. **在 avatar-boot-dependency 中定义版本**
|
|
185
|
+
```xml
|
|
186
|
+
<!-- ✅ 正确:在 BOM 中定义 -->
|
|
187
|
+
<properties>
|
|
188
|
+
<hutool.version>5.8.34</hutool.version>
|
|
189
|
+
</properties>
|
|
190
|
+
|
|
191
|
+
<dependencyManagement>
|
|
192
|
+
<dependencies>
|
|
193
|
+
<dependency>
|
|
194
|
+
<groupId>cn.hutool</groupId>
|
|
195
|
+
<artifactId>hutool-all</artifactId>
|
|
196
|
+
<version>${hutool.version}</version>
|
|
197
|
+
</dependency>
|
|
198
|
+
</dependencies>
|
|
199
|
+
</dependencyManagement>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
2. **在子模块中不指定版本**
|
|
203
|
+
```xml
|
|
204
|
+
<!-- ✅ 正确:不指定版本 -->
|
|
205
|
+
<dependency>
|
|
206
|
+
<groupId>cn.hutool</groupId>
|
|
207
|
+
<artifactId>hutool-all</artifactId>
|
|
208
|
+
</dependency>
|
|
209
|
+
|
|
210
|
+
<!-- ❌ 错误:不应指定版本 -->
|
|
211
|
+
<dependency>
|
|
212
|
+
<groupId>cn.hutool</groupId>
|
|
213
|
+
<artifactId>hutool-all</artifactId>
|
|
214
|
+
<version>5.8.34</version> <!-- 删除此行 -->
|
|
215
|
+
</dependency>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
3. **例外情况:optional 依赖**
|
|
219
|
+
```xml
|
|
220
|
+
<!-- ✅ 允许:编译时依赖可以标记为 optional -->
|
|
221
|
+
<dependency>
|
|
222
|
+
<groupId>org.projectlombok</groupId>
|
|
223
|
+
<artifactId>lombok</artifactId>
|
|
224
|
+
<optional>true</optional>
|
|
225
|
+
</dependency>
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 四、测试框架规则
|
|
231
|
+
|
|
232
|
+
### 🔴 必须使用的测试框架
|
|
233
|
+
|
|
234
|
+
| 组件 | 版本 | 说明 |
|
|
235
|
+
|------|------|------|
|
|
236
|
+
| JUnit Jupiter | 5.x | Spring Boot BOM 管理 |
|
|
237
|
+
| Mockito | 5.x | Spring Boot BOM 管理 |
|
|
238
|
+
| AssertJ | 3.x | Spring Boot BOM 管理 |
|
|
239
|
+
| Spring Boot Starter Test | 3.5.3 | 包含上述所有框架 |
|
|
240
|
+
|
|
241
|
+
### ❌ 禁止使用
|
|
242
|
+
|
|
243
|
+
- JUnit 4(使用 JUnit 5)
|
|
244
|
+
- TestNG(项目统一使用 JUnit 5)
|
|
245
|
+
- Hamcrest(使用 AssertJ)
|
|
246
|
+
|
|
247
|
+
### ✅ 推荐的测试注解
|
|
248
|
+
|
|
249
|
+
```java
|
|
250
|
+
// ✅ JUnit 5 注解
|
|
251
|
+
import org.junit.jupiter.api.Test;
|
|
252
|
+
import org.junit.jupiter.api.BeforeEach;
|
|
253
|
+
import org.junit.jupiter.api.DisplayName;
|
|
254
|
+
|
|
255
|
+
// ❌ JUnit 4 注解(不要使用)
|
|
256
|
+
import org.junit.Test;
|
|
257
|
+
import org.junit.Before;
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 五、构建插件规则
|
|
263
|
+
|
|
264
|
+
### 🔴 必须使用的插件版本
|
|
265
|
+
|
|
266
|
+
| 插件 | 版本 | 说明 |
|
|
267
|
+
|------|------|------|
|
|
268
|
+
| maven-compiler-plugin | 3.13.0 | 支持 Java 21 |
|
|
269
|
+
| maven-resources-plugin | 3.3.1 | 资源处理 |
|
|
270
|
+
| spring-boot-maven-plugin | 3.5.3 | Spring Boot 打包 |
|
|
271
|
+
|
|
272
|
+
### 🟡 推荐配置
|
|
273
|
+
|
|
274
|
+
```xml
|
|
275
|
+
<build>
|
|
276
|
+
<plugins>
|
|
277
|
+
<plugin>
|
|
278
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
279
|
+
<artifactId>maven-compiler-plugin</artifactId>
|
|
280
|
+
<version>3.13.0</version>
|
|
281
|
+
<configuration>
|
|
282
|
+
<source>21</source>
|
|
283
|
+
<target>21</target>
|
|
284
|
+
<encoding>UTF-8</encoding>
|
|
285
|
+
<parameters>true</parameters> <!-- 保留参数名 -->
|
|
286
|
+
</configuration>
|
|
287
|
+
</plugin>
|
|
288
|
+
</plugins>
|
|
289
|
+
</build>
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## 六、版本升级流程
|
|
295
|
+
|
|
296
|
+
### 🔴 强制流程
|
|
297
|
+
|
|
298
|
+
1. **只在 avatar-boot-dependency 中修改版本**
|
|
299
|
+
```bash
|
|
300
|
+
# 修改 avatar-boot-dependency/pom.xml
|
|
301
|
+
vim avatar-boot-dependency/pom.xml
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
2. **验证构建**
|
|
305
|
+
```bash
|
|
306
|
+
mvn clean install -DskipTests
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
3. **运行测试**
|
|
310
|
+
```bash
|
|
311
|
+
mvn clean test
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
4. **检查依赖树**
|
|
315
|
+
```bash
|
|
316
|
+
mvn dependency:tree > dependency-tree.txt
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
5. **提交变更**
|
|
320
|
+
```bash
|
|
321
|
+
git add avatar-boot-dependency/pom.xml
|
|
322
|
+
git commit -m "chore: upgrade xxx from x.x.x to y.y.y"
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### ❌ 禁止的操作
|
|
326
|
+
|
|
327
|
+
- ❌ 在子模块中直接修改版本
|
|
328
|
+
- ❌ 跳过测试直接升级生产环境
|
|
329
|
+
- ❌ 同时升级多个主版本依赖
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## 十四、安全漏洞检查
|
|
334
|
+
|
|
335
|
+
### 🔴 必须定期检查
|
|
336
|
+
|
|
337
|
+
使用以下命令检查已知漏洞:
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
# Maven 依赖检查
|
|
341
|
+
mvn org.owasp:dependency-check-maven:check
|
|
342
|
+
|
|
343
|
+
# 或使用 Snyk
|
|
344
|
+
snyk test
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### 🟡 高危漏洞立即修复
|
|
348
|
+
|
|
349
|
+
发现以下漏洞必须立即修复:
|
|
350
|
+
|
|
351
|
+
- CVE 评分 >= 7.0
|
|
352
|
+
- 反序列化漏洞
|
|
353
|
+
- SQL 注入漏洞
|
|
354
|
+
- 远程代码执行漏洞
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## 十五、违规处理
|
|
359
|
+
|
|
360
|
+
### 🔴 自动检查
|
|
361
|
+
|
|
362
|
+
在 CI/CD 流程中添加以下检查:
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
# 检查是否使用禁止的依赖
|
|
366
|
+
mvn dependency:tree | grep -E "commons-collections:commons-collections:3|javax.validation:validation-api|javax.servlet:javax.servlet-api"
|
|
367
|
+
|
|
368
|
+
# 检查是否有显式版本声明(除了 avatar-boot-dependency)
|
|
369
|
+
find . -name "pom.xml" -not -path "*/avatar-boot-dependency/*" -exec grep -l "<version>" {} \;
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### 🟡 人工审查
|
|
373
|
+
|
|
374
|
+
每次 PR 必须检查:
|
|
375
|
+
- [ ] 是否引入了禁止的依赖
|
|
376
|
+
- [ ] 是否在子模块中指定了版本
|
|
377
|
+
- [ ] 是否使用了正确的 GroupId/ArtifactId
|
|
378
|
+
- [ ] 是否使用了 jakarta 命名空间
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## 七、快速参考
|
|
383
|
+
|
|
384
|
+
### ✅ 正确示例
|
|
385
|
+
|
|
386
|
+
```xml
|
|
387
|
+
<project>
|
|
388
|
+
<parent>
|
|
389
|
+
<groupId>com.iflytek.springboot</groupId>
|
|
390
|
+
<artifactId>avatar-boot-parent</artifactId>
|
|
391
|
+
<version>1.0.0-SNAPSHOT</version>
|
|
392
|
+
</parent>
|
|
393
|
+
|
|
394
|
+
<dependencies>
|
|
395
|
+
<!-- ✅ 不指定版本 -->
|
|
396
|
+
<dependency>
|
|
397
|
+
<groupId>cn.hutool</groupId>
|
|
398
|
+
<artifactId>hutool-all</artifactId>
|
|
399
|
+
</dependency>
|
|
400
|
+
|
|
401
|
+
<!-- ✅ 使用正确的坐标 -->
|
|
402
|
+
<dependency>
|
|
403
|
+
<groupId>com.mysql</groupId>
|
|
404
|
+
<artifactId>mysql-connector-j</artifactId>
|
|
405
|
+
</dependency>
|
|
406
|
+
|
|
407
|
+
<!-- ✅ 使用 Jakarta 命名空间 -->
|
|
408
|
+
<dependency>
|
|
409
|
+
<groupId>org.springframework.boot</groupId>
|
|
410
|
+
<artifactId>spring-boot-starter-validation</artifactId>
|
|
411
|
+
</dependency>
|
|
412
|
+
</dependencies>
|
|
413
|
+
</project>
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
### ❌ 错误示例
|
|
417
|
+
|
|
418
|
+
```xml
|
|
419
|
+
<project>
|
|
420
|
+
<dependencies>
|
|
421
|
+
<!-- ❌ 指定了版本 -->
|
|
422
|
+
<dependency>
|
|
423
|
+
<groupId>cn.hutool</groupId>
|
|
424
|
+
<artifactId>hutool-all</artifactId>
|
|
425
|
+
<version>5.8.34</version>
|
|
426
|
+
</dependency>
|
|
427
|
+
|
|
428
|
+
<!-- ❌ 使用旧坐标 -->
|
|
429
|
+
<dependency>
|
|
430
|
+
<groupId>mysql</groupId>
|
|
431
|
+
<artifactId>mysql-connector-java</artifactId>
|
|
432
|
+
</dependency>
|
|
433
|
+
|
|
434
|
+
<!-- ❌ 使用禁止的依赖 -->
|
|
435
|
+
<dependency>
|
|
436
|
+
<groupId>commons-collections</groupId>
|
|
437
|
+
<artifactId>commons-collections</artifactId>
|
|
438
|
+
<version>3.2.2</version>
|
|
439
|
+
</dependency>
|
|
440
|
+
</dependencies>
|
|
441
|
+
</project>
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## 附录:版本速查表
|
|
447
|
+
|
|
448
|
+
| 类别 | 组件 | 版本 | 管理方式 |
|
|
449
|
+
|------|------|------|---------|
|
|
450
|
+
| 基础 | Java | 21 | 环境要求 |
|
|
451
|
+
| 基础 | Maven | 3.8.6+ | 环境要求 |
|
|
452
|
+
| Spring | Spring Boot | 3.5.3 | BOM 显式声明 |
|
|
453
|
+
| Spring | Spring Cloud | 2025.0.0 | BOM 显式声明 |
|
|
454
|
+
| Spring | Spring Cloud Alibaba | 2023.0.3.2 | BOM 显式声明 |
|
|
455
|
+
| Spring | Spring AI | 1.1.2 | BOM 显式声明 |
|
|
456
|
+
| 数据库 | MySQL Connector | 9.1.0 | BOM 管理 |
|
|
457
|
+
| 数据库 | Druid | 1.2.24 | BOM 管理 |
|
|
458
|
+
| 数据库 | MyBatis Plus | 3.5.15 | BOM 管理 |
|
|
459
|
+
| 缓存 | Redisson | 3.40.2 | BOM 管理 |
|
|
460
|
+
| 缓存 | JetCache | 2.7.8 | BOM 管理 |
|
|
461
|
+
| 工具 | Lombok | 1.18.36 | BOM 管理 |
|
|
462
|
+
| 工具 | Hutool | 5.8.34 | BOM 管理 |
|
|
463
|
+
| 工具 | Fastjson2 | 2.0.54 | BOM 管理 |
|
|
464
|
+
| 工具 | Commons Lang3 | 3.17.0 | BOM 管理 |
|
|
465
|
+
| 工具 | Commons Collections4 | 4.4 | BOM 管理 |
|
|
466
|
+
| 安全 | BouncyCastle | 1.79 | BOM 管理 |
|
|
467
|
+
| 日志 | Logstash Logback | 8.0 | BOM 管理 |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(ls:*)",
|
|
5
|
+
"Bash(git ls-tree:*)",
|
|
6
|
+
"WebSearch",
|
|
7
|
+
"Bash(grep:*)",
|
|
8
|
+
"Bash(jar tf:*)",
|
|
9
|
+
"Bash(mvn clean:*)",
|
|
10
|
+
"Bash(jar xf:*)",
|
|
11
|
+
"Bash(mvn spring-boot:run:*)",
|
|
12
|
+
"Bash(netstat:*)",
|
|
13
|
+
"Bash(taskkill:*)",
|
|
14
|
+
"Bash(java:*)",
|
|
15
|
+
"Bash(curl:*)"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|