aot 项目编译示范
2026年8月12日 上午11:35:38
v3.7.2 后 solon aot 可以像普通构造一样使用(支持任意版本的 jdk)
Solon AOT(Ahead-of-Time Processing)编译,只对主模块(有 main 函数)有效,其它模块要用常规构建方式。
主模块 AOT 时,会通过扩展加载机制合并各模块生成的 reflect-config.json / solon-resource.json(原理见 《native 了解 Aot 技术》)。
1、单模块项目编译
单模块项目(即一个主模块)。AOT 编译比较简单。下面以 solon-native-example 在 IDEA 下为例。
- 可视化操作:勾选
aot构建配置,(主模块)执行 mvn package 命令

ps: solon-native-example 的类比较少,使用 aot 编译打包后:启动时间没有提升(macbook pro 2020 款)
- 或者使用命令
mvn clean -DskipTests=true -P aot package
2、多模块项目编译
多模块项目(一个主模块,加其它多个模块)的编译,略有不同。下面以 snowy-solon 在 IDEA 下为例。
- 可视化操作:
| 第一步 所有模块先本地 mvn install |
第二步 主模块 mvn -P aot package |
|---|---|
| 不要勾选 aot,(所有模块)执行 mvn install 命令 | 勾选 aot,(主模块)执行 mvn package 命令 |
![]() |
![]() |
为什么第一步要先 install?因为各子模块也需要先各自生成 AOT 元数据(注册自己的 bean/资源),主模块构建时才能合并加载。只 install 不勾选 aot 也可以(子模块用常规构建即可,元数据由主模块收集)。
ps: snowy-solon 类可能比较多,使用 aot 编译打包后:启动时间从 3.1s 提升到 2.6s(macbook pro 2020 款)
3、构建产物验证
打包后检查主模块 target/classes/META-INF/native-image/<应用包路径>/ 下是否生成各配置文件,以及 target/generated-sources/ 下是否有 Xxx$$SolonAotProxy.java(见 《native 自动化处理清单》)。

