有时候为了减少打包后的jar包的大小,我们希望在调试的时候可以放在一起方便调试,而在打包的时候分离,方便后期的维护。举个例子,如下图所示:
在项目的resources文件下有一个web文件,我需要利用这个web文件来进行前后端联调测试,但在部署的时候,我们又不想把这个web文件夹打包到jar包中,因为这样可以方便部署后的改动(前端更新只需要更新web文件夹即可)。在网上查找不打包某个内容需要在pom文件的build标签下添加如下配置:
<resources>
<resource>
<filtering>true</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>web/**/*.*</exclude>
</excludes>
</resource>
</resources>
但在打包后,发现target的classes文件夹下没有web文件夹, 而且在项目启动后访问web下的页面报404错误,这说明maven在编译的时候直接抛弃了web文件夹,这样的配置显然不符合要求。
为了解决上述问题,需要注释掉上面的配置,并且引入maven-jar-plugin 依赖来配置maven在打jar包的时候需要排除的一些文件,配置方式如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>web/**</exclude>
</excludes>
</configuration>
</plugin>
这样在利用idea调试的时候也可以在target中生成web文件,并且不影响项目的打包过程,问题解决。但在打包后,发现target的classes文件夹下没有web文件夹, 而且在项目启动后访问web下的页面报404错误,这说明maven在编译的时候直接抛弃了web文件夹,这样的配置显然不符合要求。