发布于 3年前

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>
©2020 edoou.com   京ICP备16001874号-3