Spring Boot打包War文件时如何排除指定依赖不打入最终包?
Spring Boot打War包排除指定依赖方案
现有配置有效性说明
你贴出的依赖配置已经添加了<scope>provided</scope>和<optional>true</optional>,默认已经可以满足打包排除需求:
<scope>provided</scope>:标记该依赖仅在编译、测试阶段生效,运行时由服务环境提供,Maven打War包时默认不会将其打入WEB-INF/lib目录<optional>true</optional>:避免该依赖被传递到其他依赖当前项目的模块中
配置完成后可通过解压War包,检查WEB-INF/lib目录下不存在对应swagger相关jar包验证效果。
强制排除配置(特殊场景适用)
如果存在依赖传递导致上述配置不生效的情况,可以在Spring Boot打包插件中添加显式排除规则:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>com.mangofactory</groupId> <artifactId>swagger-springmvc</artifactId> </exclude> <exclude> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-ui</artifactId> </exclude> </excludes> </configuration> </plugin>
Gradle项目对应配置
如果你使用Gradle构建项目,对应配置如下:
dependencies { // 声明仅编译阶段生效,打包时自动排除 compileOnly 'com.mangofactory:swagger-springmvc:0.8.8' compileOnly 'org.springdoc:springdoc-openapi-ui:1.4.3' } // 如需强制排除,可在bootWar任务中添加过滤规则 bootWar { exclude('**/swagger-springmvc*.jar', '**/springdoc-openapi-ui*.jar') }
内容的提问来源于stack exchange,提问作者sajeeth
相关产品推荐
相关产品推荐

