方案一
使用开关.通过swagger的Docke的的api来关闭. 但是还是会将swagger的jar包打到生产的jar中.其入侵性依然存在.
方案二
- 将swagger配置抽取成一个springboot starter
- 打包时根据参数控制是否将此starter在运行时打到生产的jar中.
- maven 的profile可以直接控制. 在gradle中我们可以这样做
plugins {
id 'org.springframework.boot'
}
def profile = System.getProperty("profile") ?: "dev"
springBoot {
buildInfo()
}
configurations {
if (profile=="prod"){
println "build prod ${profile}"
runtime.exclude group: 'io.springfox', module: 'springfox-core'
runtime.exclude group: 'io.swagger', module: 'swagger-annotations'
}
}
dependencies {
//nvr spring boot
if (profile!="prod"){
implementation 'nvr.springboot.starter:nvr-springboot-starter-swagger:1.0.0'
}
}
- 这样打出来的jar包将会不包含swagger的所以依赖jar,
- 打包命令
./gradlew -Dprofile=prod :services:xxx-iot-uaa:build