在Ubuntu上实现Swagger自动化生成的分步指南
在Ubuntu上实现Swagger自动化生成前,需先安装以下基础工具:
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
安装完成后,验证版本:node -v、npm -v(建议使用Node.js 14及以上版本)。Swagger自动化生成的核心是通过代码注解或构建流程集成实现文档与代码同步。以下是常见场景的解决方案:
Spring Boot项目推荐使用Springdoc OpenAPI(替代传统的Springfox,支持OpenAPI 3.0+,维护更活跃),通过注解自动生成文档。
pom.xml(Maven)中添加以下依赖:<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.5.0</version> <!-- 使用最新稳定版 -->
</dependency>
(若使用Gradle,在build.gradle中添加:implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.5.0')。import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@Tag(name = "用户管理", description = "用户相关接口")
@RestController
@RequestMapping("/api/users")
public class UserController {
@Operation(summary = "获取用户列表", description = "分页返回所有用户信息")
@GetMapping
public ResponseEntity<List<User>> listUsers(
@Parameter(description = "页码", example = "1") @RequestParam(defaultValue = "1") int page,
@Parameter(description = "每页数量", example = "10") @RequestParam(defaultValue = "10") int size) {
// 业务逻辑
return ResponseEntity.ok(userService.list(page, size));
}
}
http://localhost:8080/swagger-ui.html(Springdoc默认路径),即可看到自动生成的交互式文档。若已有OpenAPI规范文件(swagger.yaml/openapi.json),可通过Swagger Codegen或OpenAPI Generator(推荐,支持更多语言和框架)自动生成文档或客户端代码。
sudo npm install -g @openapitools/openapi-generator-cli
html2、markdown等格式):openapi-generator-cli generate \
-i ./path/to/openapi.yaml \ # 规范文件路径
-l html2 \ # 输出格式
-o ./path/to/output/docs # 输出目录
Makefile、pom.xml(Maven)或build.gradle(Gradle)中,实现“代码变更→自动生成文档”的自动化。例如,在Maven的pom.xml中添加exec-maven-plugin插件:<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>generate-resources</phase> <!-- 构建阶段:生成资源前 -->
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>openapi-generator-cli</executable>
<arguments>
<argument>generate</argument>
<argument>-i</argument>
<argument>${project.basedir}/src/main/resources/openapi.yaml</argument>
<argument>-l</argument>
<argument>html2</argument>
<argument>-o</argument>
<argument>${project.build.directory}/generated-docs</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
执行mvn generate-resources时,会自动调用OpenAPI Generator生成文档。为实现“代码提交→自动生成文档”的全自动化,可结合Git钩子或CI/CD工具(如Jenkins、GitHub Actions):
.git/hooks/pre-commit中添加生成命令(如openapi-generator-cli generate),提交代码前自动执行。workflow配置:jobs:
generate-docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'
- name: Generate OpenAPI Docs
run: |
wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.6.0/openapi-generator-cli-6.6.0.jar -O openapi-generator-cli.jar
java -jar openapi-generator-cli.jar generate -i src/main/resources/openapi.yaml -l html2 -o target/generated-docs
- name: Upload Docs
uses: actions/upload-artifact@v3
with:
name: swagger-docs
path: target/generated-docs
每次代码推送至GitHub时,自动触发文档生成并上传为构建产物。swagger.yaml/openapi.json符合OpenAPI规范(如字段类型、路径格式),否则会导致生成失败。可使用Swagger Editor(swagger-editor-cli validate)验证规范文件。spring.devtools.restart.enabled=true)才能看到最新文档;若使用规范文件方式,修改后重新生成即可。