公司的某些前端项目是使用Maven构建的,把静态资源和一些配置文件,jar包一起打成一个war包。然而,前端本地开发时,常常会安装很多依赖(在node_modules目录下),这些文件往往不需要打包进去。如何忽略掉这些文件和目录呢?
e.g. 目录结构如图:
打包时需要把src/main/webapps/mock 目录和内部的所有文件忽略掉。
一开始,打算使用maven的exclude标签来忽略,后来发现不起效果。查看插件的 官方文档。发现了一个属性:packagingExcludes可以达到这个效果。
示例代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.guojb.maven-demo</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<configuration>
<!-- 重点 -->
<packagingExcludes>mock/*</packagingExcludes>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>resource2</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
</project>
构建结果:


另外,要区分一下warSourceExcludes和packagingExcludes
packagingExcludes:复制完成后,打war包时忽略文件
warSourceExcludes:从源代码中copy文件到target目录时,就忽略文件
详见:官方文档