RuoYi-Vue-Plus/Cursor编译优化配置指南.md

477 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cursor 编译优化配置指南
## 1. Cursor 基础配置优化
### 1.1 工作区设置
在项目根目录创建 `.vscode/settings.json`
```json
{
"java.configuration.runtimes": [
{
"name": "JavaSE-21",
"path": "D:\\jdk",
"default": true
}
],
"java.compile.nullAnalysis.mode": "disabled",
"java.autobuild.enabled": false,
"java.maxConcurrentBuilds": 8,
"java.import.maven.enabled": true,
"java.import.gradle.enabled": false,
"java.configuration.maven.userSettings": "C:\\Users\\{username}\\.m2\\settings.xml",
"maven.executable.path": "D:\\maven3.9\\bin\\mvn.cmd",
"maven.terminal.useJavaHome": true,
"maven.terminal.customEnv": [
{
"environmentVariable": "MAVEN_OPTS",
"value": "-Xmx4g -XX:+UseG1GC"
},
{
"environmentVariable": "JAVA_TOOL_OPTIONS",
"value": "-Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai"
}
],
"files.exclude": {
"**/target": true,
"**/.idea": true,
"**/node_modules": true,
"**/logs": true,
"**/temp": true
},
"search.exclude": {
"**/target": true,
"**/node_modules": true,
"**/logs": true
},
"files.watcherExclude": {
"**/target/**": true,
"**/node_modules/**": true,
"**/logs/**": true
}
}
```
### 1.2 Java扩展配置
`.vscode/settings.json` 中添加Java相关配置
```json
{
"java.server.launchMode": "Standard",
"java.sources.organizeImports.starThreshold": 99,
"java.sources.organizeImports.staticStarThreshold": 99,
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguide/gh-pages/eclipse-java-google-style.xml",
"java.format.settings.profile": "GoogleStyle",
"java.saveActions.organizeImports": true,
"java.completion.favoriteStaticMembers": [
"org.junit.Assert.*",
"org.junit.Assume.*",
"org.junit.jupiter.api.Assertions.*",
"org.junit.jupiter.api.Assumptions.*",
"org.junit.jupiter.api.DynamicContainer.*",
"org.junit.jupiter.api.DynamicTest.*",
"org.mockito.Mockito.*",
"org.mockito.ArgumentMatchers.*",
"org.mockito.Answers.*"
]
}
```
## 2. Maven 集成优化
### 2.1 Maven 任务配置
`.vscode/tasks.json` 中配置Maven任务
```json
{
"version": "2.0.0",
"tasks": [
{
"label": "Maven: Clean Compile",
"type": "shell",
"command": "mvn",
"args": ["clean", "compile", "-T", "1C", "-DskipTests=true"],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": ["$maven-compiler-java"]
},
{
"label": "Maven: Compile PMS Module",
"type": "shell",
"command": "mvn",
"args": ["compile", "-pl", "ruoyi-modules/ruoyi-pms", "-am", "-T", "1C", "-DskipTests=true"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"problemMatcher": ["$maven-compiler-java"]
},
{
"label": "Maven: Package",
"type": "shell",
"command": "mvn",
"args": ["clean", "package", "-T", "1C", "-DskipTests=true"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"problemMatcher": ["$maven-compiler-java"]
},
{
"label": "Spring Boot: Run",
"type": "shell",
"command": "mvn",
"args": ["spring-boot:run", "-pl", "ruoyi-admin", "-Dspring.profiles.active=dev"],
"group": "build",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated"
},
"isBackground": true,
"problemMatcher": {
"pattern": {
"regexp": "^.*$",
"file": 1,
"location": 2,
"message": 3
},
"background": {
"activeOnStart": true,
"beginsPattern": "^.*Starting.*",
"endsPattern": "^.*Started.*in.*seconds.*"
}
}
}
]
}
```
### 2.2 启动配置
`.vscode/launch.json` 中配置调试启动:
```json
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "RuoYi Application",
"request": "launch",
"mainClass": "org.dromara.DromaraApplication",
"projectName": "ruoyi-admin",
"args": "",
"vmArgs": "-Xmx2g -Xms1g -XX:+UseG1GC -Dspring.profiles.active=dev -Dfile.encoding=UTF-8",
"env": {
"JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
},
{
"type": "java",
"name": "RuoYi Debug",
"request": "launch",
"mainClass": "org.dromara.DromaraApplication",
"projectName": "ruoyi-admin",
"args": "",
"vmArgs": "-Xmx2g -Xms1g -XX:+UseG1GC -Dspring.profiles.active=dev -Dfile.encoding=UTF-8 -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005",
"env": {
"JAVA_TOOL_OPTIONS": "-Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai"
},
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen"
}
]
}
```
## 3. Cursor AI 功能优化
### 3.1 AI 代码补全配置
在用户设置中配置:
```json
{
"cursor.ai.enabled": true,
"cursor.ai.model": "gpt-4",
"cursor.ai.maxTokens": 4000,
"cursor.ai.temperature": 0.1,
"cursor.ai.includeContext": true,
"cursor.ai.contextFiles": [
"docs/**/*.md",
"ruoyi-modules/ruoyi-pms/src/main/java/**/*.java",
"*.md"
]
}
```
### 3.2 代码生成提示模板
创建 `.cursor/rules` 文件:
```
# RuoYi-Vue-Plus 开发规则
- 遵循RuoYi框架规范
- 使用MapStruct Plus进行对象转换
- Service方法添加@Transactional注解
- Controller方法添加@Log和@SaCheckPermission注解
- 实体类继承TenantEntity
- BO类使用JSR 303校验注解
- VO类使用@Translation和@Sensitive注解
```
## 4. 性能优化配置
### 4.1 内存和CPU优化
`.vscode/settings.json` 中添加:
```json
{
"java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx4g -Xms1g",
"java.import.maven.offline": false,
"java.maven.downloadSources": true,
"java.maven.downloadJavadoc": false,
"java.referencesCodeLens.enabled": false,
"java.implementationsCodeLens.enabled": false,
"java.signatureHelp.enabled": true,
"java.contentProvider.preferred": "fernflower"
}
```
### 4.2 文件监控优化
```json
{
"files.watcherExclude": {
"**/target/**": true,
"**/node_modules/**": true,
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/logs/**": true,
"**/temp/**": true
}
}
```
## 5. 推荐扩展
### 5.1 必装扩展
- **Extension Pack for Java** - Java开发基础包
- **Spring Boot Extension Pack** - Spring Boot支持
- **Maven for Java** - Maven集成
- **Lombok Annotations Support** - Lombok支持
- **SonarLint** - 代码质量检查
- **GitLens** - Git增强
- **Thunder Client** - API测试
### 5.2 可选扩展
- **Bracket Pair Colorizer** - 括号高亮
- **Auto Rename Tag** - 标签自动重命名
- **Path Intellisense** - 路径智能提示
- **Chinese Language Pack** - 中文语言包
## 6. 快捷键配置
### 6.1 自定义快捷键
`.vscode/keybindings.json` 中配置:
```json
[
{
"key": "ctrl+shift+b",
"command": "workbench.action.tasks.runTask",
"args": "Maven: Clean Compile"
},
{
"key": "ctrl+f5",
"command": "workbench.action.tasks.runTask",
"args": "Spring Boot: Run"
},
{
"key": "ctrl+shift+f5",
"command": "workbench.action.debug.start"
},
{
"key": "ctrl+shift+p",
"command": "workbench.action.tasks.runTask",
"args": "Maven: Compile PMS Module"
}
]
```
## 7. 代码片段
### 7.1 创建代码片段文件
`.vscode/snippets/java.json` 中添加:
```json
{
"RuoYi Controller": {
"prefix": "rycontroller",
"body": [
"@Api(tags = \"${1:模块}管理\")",
"@RestController",
"@RequestMapping(\"/${2:module}/${3:entity}\")",
"@RequiredArgsConstructor",
"public class ${4:Entity}Controller {",
"",
" private final I${4:Entity}Service ${5:entity}Service;",
"",
" @GetMapping(\"/list\")",
" @ApiOperation(\"查询${1:模块}列表\")",
" @SaCheckPermission(\"${2:module}:${3:entity}:list\")",
" public TableDataInfo<${4:Entity}Vo> list(${4:Entity}Bo bo, PageQuery pageQuery) {",
" return ${5:entity}Service.queryPageList(bo, pageQuery);",
" }",
"",
" $0",
"}"
],
"description": "创建RuoYi Controller模板"
},
"RuoYi Service": {
"prefix": "ryservice",
"body": [
"@Service",
"@RequiredArgsConstructor",
"public class ${1:Entity}ServiceImpl implements I${1:Entity}Service {",
"",
" private final ${1:Entity}Mapper baseMapper;",
"",
" @Override",
" @Transactional(rollbackFor = Exception.class)",
" public Boolean insertByBo(${1:Entity}Bo bo) {",
" ${1:Entity} add = MapstructUtils.convert(bo, ${1:Entity}.class);",
" boolean flag = baseMapper.insert(add) > 0;",
" if (flag) {",
" bo.set${2:Id}(add.get${2:Id}());",
" }",
" return flag;",
" }",
"",
" $0",
"}"
],
"description": "创建RuoYi Service实现类模板"
}
}
```
## 8. 调试配置
### 8.1 远程调试配置
```json
{
"type": "java",
"name": "Remote Debug",
"request": "attach",
"hostName": "localhost",
"port": 5005,
"projectName": "ruoyi-admin"
}
```
### 8.2 测试配置
```json
{
"type": "java",
"name": "JUnit Tests",
"request": "launch",
"mainClass": "",
"projectName": "ruoyi-pms",
"args": "",
"vmArgs": "-Dspring.profiles.active=test",
"env": {},
"console": "integratedTerminal"
}
```
## 9. 项目结构优化
### 9.1 工作区配置
创建 `ruoyi-vue-plus.code-workspace`
```json
{
"folders": [
{
"name": "RuoYi-Vue-Plus",
"path": "."
},
{
"name": "PMS模块",
"path": "./ruoyi-modules/ruoyi-pms"
},
{
"name": "前端项目",
"path": "./ruoyi-plus-soybean"
}
],
"settings": {
"java.configuration.workspaceCacheLimit": 90
},
"extensions": {
"recommendations": [
"vscjava.vscode-java-pack",
"vmware.vscode-spring-boot",
"vscjava.vscode-maven",
"gabrielbb.vscode-lombok",
"sonarsource.sonarlint-vscode"
]
}
}
```
## 10. 故障排除
### 10.1 常见问题
1. **Java Language Server启动失败**
- 检查Java路径配置
- 清理工作区缓存:`Ctrl+Shift+P` -> `Java: Reload Projects`
2. **Maven依赖无法解析**
- 检查Maven配置路径
- 执行:`Ctrl+Shift+P` -> `Java: Reload Projects`
3. **编译错误**
- 检查JDK版本是否正确
- 清理target目录`mvn clean`
### 10.2 性能优化建议
1. 定期清理工作区缓存
2. 关闭不必要的扩展
3. 调整Java Language Server内存
4. 使用SSD存储项目文件
## 使用建议
1. **首次打开项目**
- 等待Java Language Server初始化完成
- 执行 `Java: Reload Projects` 确保依赖正确加载
- 运行 `Maven: Clean Compile` 验证编译
2. **日常开发**
- 使用快捷键快速编译和运行
- 利用AI代码补全提升效率
- 定期清理缓存和临时文件
3. **调试技巧**
- 使用断点调试复杂业务逻辑
- 利用条件断点提升调试效率
- 使用远程调试连接运行中的应用