Maven filter 导致打包以后的excel文件损坏的问题

问题描述:

        系统内原本有个功能,是导出excel的报表。

这个功能原本是好的。后来变更过一些配置以后,发现这个功能出问题了

我们系统的excel导出基于预设的模板的,预设的模板的位置如下图:

Maven filter 导致打包以后的excel文件损坏的问题_第1张图片

就是说,模板的格式预先设置好了,然后读取模板的流,写入数据,再输出

现在这个功能出问题了,经过排查,发现是部署到web容器以后,这两个excel模板已经损坏了

对比分支,发现之前的部署并不会导致excel模板损坏

经过再次的排查,发现是因为使用了maven的filter引起的:

Maven filter 导致打包以后的excel文件损坏的问题_第2张图片

使用maven的filter的目的是为了每次部署的时候根据maven命令的不同选择不同的配置文件,重写db.properties。而不需要每次都去修改数据库连接等配置

从filter的配置中可以看到,目标dir是src/main/resources目录,这个目录下就包含了两个excel文件。

不清楚是何原因,这样过滤一遍之后,打出来的war包,excel文件就损坏了。


好了,既然问题已经定位,为了最大程度的减少修改量,我的第一个设想是resource下面是否有exclude标记?一看确实有:

Maven filter 导致打包以后的excel文件损坏的问题_第3张图片

如果此时是用eclipse的export的方式导出war包,OK,这个问题是解决了的。

但如果改用maven的package命令打包,我却发现打出来的war包,template目录没了。。

没了。。。对,没了。。。


无奈之下,只好,把template目录转移到webapp目录下,并且修改相应的读取路径。

这样一来,filter不会扫描到两个excel模板,打出来的war包,excel自然也就是好的了。


关于excludes标记的那种方式,或许是我使用的方式不对,或许是真的不可以。如果有更好的方式,请一定告诉我。




你可能感兴趣的:(maven)