在更新Swagger前,需完成以下基础准备,避免操作风险:
api-spec.yaml/api-spec.json)、项目配置文件(如Spring Boot的application.properties)及自定义样式/脚本,防止更新后数据丢失。springfox-swagger2 2.9.2需适配Spring Boot 2.x,而springdoc-openapi更适合Spring Boot 3.x。curl、wget、unzip),且Java环境(OpenJDK 11+)符合Swagger工具要求。Swagger在Ubuntu上的安装方式多样(包管理器、npm、Docker等),更新流程需根据初始安装方式选择:
若Swagger通过apt安装(如swagger-ui-express),可使用以下命令更新:
# 更新系统包列表
sudo apt update
# 卸载旧版本(可选,避免残留文件)
sudo apt remove swagger-ui-express
# 安装最新版本
sudo apt install swagger-ui-express
# 验证版本
swagger-ui-express --version
注意:apt仓库的Swagger版本可能滞后于官方最新版,若需最新功能,建议选择其他方式。
若Swagger通过npm(Node.js)安装(如swagger-ui-dist、swagger-editor),可使用以下命令:
# 更新全局安装的Swagger UI
npm update -g swagger-ui-dist
# 或使用yarn
yarn global upgrade swagger-ui-dist
# 更新项目本地依赖(进入项目目录)
npm update swagger-ui-dist
# 或使用yarn
yarn upgrade swagger-ui-dist
更新后,需重启项目服务使新版本生效。
若使用Docker运行Swagger(如swaggerapi/swagger-ui),可通过拉取最新镜像并重建容器实现更新:
# 拉取最新镜像(以swagger-ui为例)
docker pull swaggerapi/swagger-ui
# 停止并删除旧容器(替换<container_id>为实际容器ID)
docker stop <container_id>
docker rm <container_id>
# 用新镜像启动容器(映射端口根据实际调整)
docker run -d -p 8080:8080 swaggerapi/swagger-ui
提示:可通过docker images查看镜像版本,确保拉取的是最新版。
若需完全控制版本(如特定版本修复),可手动下载Swagger压缩包并替换旧文件:
# 下载最新版Swagger UI(替换vX.Y.Z为版本号,如v4.15.5)
wget https://github.com/swagger-api/swagger-ui/archive/refs/tags/v4.15.5.zip
# 解压
unzip v4.15.5.zip
# 进入解压目录
cd swagger-ui-4.15.5
# 安装依赖并启动(以http-server为例)
npm install
npm install -g http-server
http-server -p 8081
更新后,需修改项目配置(如HTML引用路径),指向新版本的资源文件。
若项目使用构建工具(如Maven、Gradle),更新Swagger依赖需调整配置文件并解决冲突:
在pom.xml中修改Swagger依赖版本,例如升级springfox-swagger2:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version> <!-- 替换为目标版本 -->
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version> <!-- 替换为目标版本 -->
</dependency>
解决冲突:使用Maven Helper插件查看依赖树,排除冲突的传递依赖(如Guava):
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
在build.gradle中修改依赖版本:
implementation 'io.springfox:springfox-swagger2:2.9.2'
implementation 'io.springfox:springfox-swagger-ui:2.9.2'
同样需解决传递依赖冲突,使用exclude关键字排除重复库。
http://localhost:8080/swagger-ui.html),检查API文档是否能正常加载、接口测试是否可用。swagger-ui-express --version、java -jar swagger-codegen-cli.jar version),确保更新成功。