金仓老旧项目改造-8

今天把gateway和ca都启动起来吧,看看能不能一起测试了,再加上之前已经验证过的业务模块,应该这整个金仓的迁移工作就算验证完成了,后面就是其它模块的迁移了,但是因为都是差不多的,所以难度就不大了,今天的工作应该是一个较关键的点,但是磨刀不误砍柴功,咱们先了解一下.trae目录是做什么的?

.trae目录

官方的说法,这个目录是用来存放trae使用的配置和元数据的,这些数据包括什么呢?通常会包含,rule规则、配置文件、缓存数据、工作区设置。

rule规则

项目规则文件是指例如编码规范、构建命令等规则。以我们这个项目为例,因为我没有用系统默认的java和maven环境,因此,就可以在这里填加规则来帮助trae用满足要求的规则来编译项目。那应该如何添加这个规则呢?

我给大家一个例子

复制代码
# ca 项目规则

## 项目概述
ca 是一个基于 xxx 框架开发的统一认证中心(CA),提供单点登录(SSO)、会话管理和权限控制等功能。

## 环境要求
- **Java**: JDK 1.8
- **Maven**: 3.9.9 或更高版本
- **数据库**: 金仓数据库 (KingbaseES) 或 MySQL
- **Redis**: 用于会话和缓存存储
- **Nacos**: 用于服务注册与发现

## 编译命令

### 重要前提条件
**必须使用指定的 settings-xxx.xml 配置文件进行编译,否则会导致依赖下载失败!**

### 环境变量设置
```powershell
$env:JAVA_HOME = "D:\jdk8.4"
```

### Maven 路径定义
```powershell
$MvnCmd = "D:\apache-maven-3.9.9\bin\mvn.cmd"
$SettingsXml = "D:\conf\settings-zkhz.xml"
```

### 完整编译(所有207个模块)
```powershell
& $MvnCmd clean package -f "d:\pom.xml" -s $SettingsXml -P dev -DskipTests
```

### 快速编译(仅编译guns-main-project模块)
如果只需要编译CA主应用,可以使用以下命令,这样可以节省大量时间:
```powershell
& $MvnCmd clean package -f "d:\pom.xml" -s $SettingsXml -P dev -DskipTests
```

### 编译特定模块及其依赖
如果需要编译特定模块及其依赖,可以使用以下命令:
```powershell
& $MvnCmd clean package -pl main-project -am -s $SettingsXml -P dev -DskipTests
```
其中 `-pl` 指定要编译的模块,`-am` 表示同时编译该模块的依赖项。

## 编译产物
- **CA 主应用**: `d:\target\xxx.jar`
- **Gateway 网关**: `d:\target\xxxx.jar`

## 启动命令
```powershell
$env:JAVA_HOME = "D:\LEO\bin\java\jdk8.4"
java -jar "d:\target\xxxx.jar" --spring.profiles.active=local
```

## 外部服务依赖
在启动 CA 服务前,需要确保以下服务已运行:
- **金仓数据库 (KingbaseES)**: 监听端口 54321
- **Redis 服务器**: 监听端口 6379,使用数据库 10
- **Nacos 服务器**: 监听端口 8848

## 常见问题及解决方案

### 双主类问题
如果遇到以下错误:
```
Unable to find a single main class from the following candidates [cn.stylefeng.guns.GunsApplication, cn.stylefeng.guns.TestGunsApplication]
```

**解决方案**:在 `xxx-main-project/pom.xml` 的 `spring-boot-maven-plugin` 配置中指定主类:
```xml
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    ...
    <configuration>
        <fork>true</fork>
        <mainClass>cn.stylefeng.xxx.Application</mainClass>
    </configuration>
</plugin>
```

### 控制台输出中文乱码
- **解决方案**: 
  1. 确保在pom.xml的maven-compiler-plugin中设置了UTF-8编码
  2. 在IDE或命令行启动时设置JVM参数: `-Dfile.encoding=UTF-8`
  3. Windows系统下可在启动前执行: `chcp 65001` 将控制台代码页设置为UTF-8

### 环境配置问题
项目启动需要以下外部依赖服务,否则会出现相应错误:
1. **金仓数据库 (KingbaseES)**: 提供数据存储功能
2. **Redis 服务器**: 用于会话管理和缓存
3. **Nacos 服务注册中心**: 用于微服务治理

## 环境切换
项目支持多种环境配置,通过 Maven Profile 和 Spring Profile 控制:
- `dev`: 开发环境 (默认)
- `test`: 测试环境
- `local`: 本地环境
- `prod`: 生产环境

启动时指定环境: `--spring.profiles.active={环境名}`

好了,这个就是一个比较完整的编译规则文件,一般我们会把它放在.trae/rules/project_rules.md。大家也可以自行存放,方便自己使用即可。

有了规则文件之后我们怎么用呢?

首先,可以把它当成一个参考文档使用,在你想使用的时候直接打开使用就可以了。但是我知道这肯定不是大家期待的答案,这也就是为什么ai可爱的原因,她可以认真的说一些废话,给我们平填很多快乐,呵呵。那么什么才是我们期待的用法呢?继续往下看。

首先第一种,就是可以直接提问,如果启动项目,姗,还是叫姗吧,ai打起来太麻烦了,她就会根据规则给你输出标准的启动方法。这块你可以任意发挥。她都能理解。

第二种,如果你的规则不是全局的规则,那么也可以在对话框中用#rule来选择你想使用的规则,这样就可以更有针对性。

gateway和ca联合测试

这次我们用spec功能试一下,用/spec开启spec工作流方式,这种方式姗会在.trae/specs/目录下创建一个工作流目录,并且在目录中创建三个文件,包含spec.mdtasks.md,checklist.md。下面我们分别来研究一下。

spec.md

这个是详细的说明了工作流的内容,要做什么,环境是什么,验证等等。用户可以跟据她生成的这个文件对ai对需求的理解进行检查,确保没有歧义。

tasks.md

这个文件是根据spec对工作流进行拆分,分成一个个小任务,用户可以对具体任务划分进行调整或更改,但是这个描述比较范范,可能不太好修改,而且也容易产生歧义,这块其实可以再考虑考虑,我理解这个更像文档的分段,或者就是任务的名称或todolist那种,可能更多的作用是用来索引。让用户了解现在ai做到那里了。

除了这个以外,tasks.md文件中还记录了各个任务的依赖关系。像是一个简化版的工作流,应该也是借鉴了LangGraph的思路。

checklist.md

这个挺有意思的,会吧各种检查点都写出来,这样方便ai的处理,也方便用户的观看。

说着说着,第一个spec已经执行完了,这种写blog+ai开发的模式真的挺好。即学习了东西,又完成了工作,还可以给自己备忘。

相关推荐
wanghowie2 小时前
22.从0到1搭建AI运营助手——最小可运行版本(v1)
人工智能
深海鱼在掘金2 小时前
从Claude Code泄露源码看工程架构:第四章—— 一次请求的完整生命周期与流式执行引擎设计
人工智能·设计模式·命令行
颜酱2 小时前
提示词强化 3:JSON 与「流式」——前后端原理、BFF、以及两个示例页
前端·javascript·人工智能
大数据魔法师2 小时前
AI Agent(五)- Prompt提示词
人工智能·prompt
Mr数据杨2 小时前
医学影像分类实战复盘 从课程赛题到可落地建模流程
人工智能·机器学习·分类·数据挖掘·数据分析·kaggle
甲维斯2 小时前
Kimi2.6的两大核心亮点及测试!
人工智能·ai编程·vibecoding
CeshirenTester2 小时前
字节开源 DeerFlow 2.0:智能体开始“自己干活”了
人工智能·python
|晴 天|2 小时前
AI智能助手功能实现
前端·vue.js·人工智能
IDZSY04302 小时前
机乎新手入门:5分钟玩转AI社交
人工智能