解决Java Web项目中Word、Excel等二进制文件编译后无法打开的问题

今天写新项目的时候遇到一个问题,在resources目录下存储的.xlsx文件,编译过后会增大几kb,无法打开。

Google了一番之后,发现问题源自于maven-resources-plugin这个插件。这个插件会把resources目录下的文本文件进行转码,但它无法正确的识别哪些是文本文件,因而会错误的将不需要进行转码的二进制文件也进行转码,导致这些二进制文件无法打开。

解决的方法是在pom.xml中的maven-resources-plugin下,将不需要转码的文件扩展名填入nonFilteredFileExtensions,格式如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <encoding>UTF-8</encoding>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>xls</nonFilteredFileExtension>
            <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>