
Milestone
SDK [2.0.0-RELEASE]
2.0.0-RELEASE 是 ApiHug 的一个重要里程碑版本,引入了多项破坏性变更,旨在构建面向下一代、大语言模型(LLM)友好的
API 规范与工具生态。
😆 快速入门指南:
ApiHug - API 设计智能助手(IntelliJ 插件)
⚠️⚠️⚠️ 请勿升级至 Spring Boot 4.0 及以上版本(截至 2025 年 12 月) —— 当前 SDK 尚未兼容 Spring Boot 4.0 引入的破坏性变更。⚠️⚠️⚠️
强行升级可能导致大量难以排查的构建或运行时错误,严重影响开发效率。
如需了解 Spring Boot 4.0 中的具体破坏性变更,请参考官方迁移指南:
oneof 语法实现。allOf 展开并简化响应包装结构。请参考 apihug-demo/libs.versions.toml
{PROJECT_ROOT}/gradle/libs.versions.toml 中将 apihug = "1.0.0-RELEASE" 更新为 2.0.0-RELEASE 或更高版本。1.0.0+:ApiHug - API 设计智能助手3.8.x 系列,因 Spring Boot 4.0 存在破坏性变更。wire 或 stub 命令。模块结构
src/
├── main/
│ ├── java/ → 手写的核心业务逻辑代码
│ ├── api/ → 由 Wire 编译器生成的 Java 类(用于生产环境)
│ └── proto/ → `.proto` 协议定义文件(作为资源包含,此处不编译为 Java)
│
├── test/
│ ├── java/ → 标准的单元测试与集成测试
│ └── api/ → API 契约/守卫测试(在 `test` 阶段编译并执行)
│
└── test-kola/
├── java/ → 自动生成的 Java 测试类(通过 JUnit Platform 编译并执行)
├── groovy/ → 人工编写的 Groovy DSL 脚本(作为资源处理,**不编译**)
└── resources/ → 其他测试资源(如契约、测试数据、配置等)
test-kola/groovy 目录中的 Groovy DSL 脚本由开发者编写,用于定义测试契约或行为,不会被 Gradle 编译。testKola 源集的输出目录,供自定义代码生成器在构建时读取。test-kola/java,由 testKola Gradle 任务编译,并通过 JUnit Platform 执行。生产源码布局
为提升可读性与可维护性,应用的生产代码按逻辑拆分至 src/main/ 下多个子目录:
src/main/
├── java/ → 手写业务逻辑(服务、控制器等)
├── api/ → 自动生成的 DTO 与 REST 接口
├── trait/ → 自动生成或共享的 Mixin/Trait 类
├── mcp/ → 自动生成的微服务契约或协议代码
└── domain/ → 核心领域模型(聚合根、值对象等)
尽管物理路径分离,所有源码均属于同一生产模块,需一并编译打包为单一 JAR。
测试源码布局
测试代码采用对称结构,保持逻辑一致性:
src/test/
├── java/ → 核心逻辑的单元/集成测试
├── api/ → API 层契约/守卫测试
├── trait/ → Trait/Mixin 行为验证
├── mcp/ → 协议契约校验测试
└── domain/ → 领域模型不变性与行为测试
所有测试源码均属于标准 test 源集,通过 test 任务统一执行,共享主模块与测试模块的类路径及依赖(如 JUnit、Mockito 等)。
// 旧路径
import "extend/version.proto";
import "swagger/annotations.proto";
import "extend/domain.proto";
// 新路径
import "apihug/protobuf/extend/version.proto";
import "apihug/protobuf/swagger/annotations.proto";
import "apihug/protobuf/extend/domain.proto";
语法增强
oneof 实现多态(OpenAPI 映射为 allOf)internal / external / hide 等 API 可见性标记wire 项目支持 protoImport 语法,用于引入第三方 Protobuf 依赖。stub 项目应使用 wireImport 语法引入 Wire 模块依赖;若误用 implementation,虽无语法错误,但会导致 stub 命令生成内容为空。