使用Gradle构建Spring Boot+Angular项目War包时排除指定目录
解决Gradle打包War时排除webapp下src和node_modules的问题
我来帮你搞定这个困扰!你遇到的是Gradle War插件默认会把src/main/webapp下所有内容都打包进War包的情况,咱们只需要在build.gradle里给打包任务加个排除规则就行,具体有两种常用方式:
方式一:配置基础war任务
如果你的项目是用标准的Gradle War插件打包,直接在build.gradle里添加以下配置:
war { // 排除webapp目录下的src文件夹及其所有子内容 exclude 'src/**' // 排除webapp目录下的node_modules文件夹及其所有子内容 exclude 'node_modules/**' }
这个配置会明确告诉Gradle,打包时忽略这两个目录的所有文件和子目录,完全不影响你已经输出到src/main/resources/static的Angular构建产物——因为resources下的内容本来就会被Gradle自动打包到War的WEB-INF/classes/static路径下,前端运行需要的资源一个都不会少。
方式二:配置Spring Boot的bootWar任务
如果你的项目用了Spring Boot插件,并且是通过bootWar生成可执行War包,那就把配置加到bootWar任务里:
bootWar { exclude 'src/**' exclude 'node_modules/**' }
验证配置是否生效
配置完成后,运行对应的打包命令:
- 标准War:
./gradlew war - 可执行War:
./gradlew bootWar
打包完成后,找到生成的War包(一般在build/libs目录下),解压后检查WEB-INF/webapp目录,你会发现src和node_modules已经被排除在外了。
内容的提问来源于stack exchange,提问作者Srinivas B
相关产品推荐
相关产品推荐

