Maven压缩资源导致文件损坏的解决

项目场景:

在项目中使用二进制文件(非文本文件),如Excel,Jasper,进行模板导出


问题描述

在项目中使用二进制文件进行模板导出功能,出现文件损坏的情况
如使用JasperReports的 .jasper二进制文件:

java.io.StreamCorruptedException:invalid stream header: EFBFBDEF

或者

Error loading object from InputStream.

报错描述


原因分析:

经过多方百度,发现项目编译的时候Maven会对项目的资源进行压缩


解决方案:

在项目的POM文件中添加如下:

<build>
  <resources>
      <resource>
          <directory>src/main/resources</directory>
          <!--不进行文件过滤,即不进行文件压缩-->
          <filtering>false</filtering>
      </resource>
  </resources>
</build>

或者可以这样:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <version>2.6</version>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>UTF-8</encoding>
                <!--不进行过滤的扩展名-->
                <nonFilteredFileExtensions>
                    <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                    <nonFilteredFileExtension>docx</nonFilteredFileExtension>
                </nonFilteredFileExtensions>
            </configuration>
        </plugin>
    </plugins>
</build>

猜你喜欢

转载自blog.csdn.net/u013494827/article/details/123769878