Spring boot maven打包后文件变大原因以及解决方法
在一个Spring boot项目中,添加了一些zip压缩文件。在开发过程中,从项目中下载的文件能够正常打开。但一旦打成jar包后,下载的zip包就打不开了。
原因定位
查看下载的zip压缩包,我们发现下载的zip文件要比我们原来的要大。所以我们怀疑是spring boot打包导致。通过查找相关资料,原因是我们在maven打包资源是设置了filtering。
示例:
<resource>
  <directory>src/main/resources</directory>
  <filtering>true</filtering>
</resource>maven打包资源时,filtering如果为true,maven会使用环境变量替换文件中引用了此变量的值,但是对于二进制文件,可能导致文件破坏。
解决方法
方法一:先排除二进制文件,如zip文件。filtering设为true。然后添加一个resource,针对二进制文件设置filtering为false。
<resource>
   <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <excludes>
        <exclude>**/*.zip</exclude>
        <exclude>**/*.csv</exclude>
    </excludes>
</resource>
<resource>
    <directory>src/main/resources</directory>
    <filtering>false</filtering>
    <includes>
        <include>**/*.zip</include>
        <include>**/*.csv</include>
    </includes>
</resource>方法二:
在resource maven插件,对特定后缀的文件不做filtering:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-resources-plugin</artifactId>
     <version>${maven-resources-plugin.version}</version>
     <configuration>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>db</nonFilteredFileExtension>
            <nonFilteredFileExtension>zip</nonFilteredFileExtension>
         </nonFilteredFileExtensions>
     </configuration>
</plugin> 
             
             
             
             
            