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

在项目中,使用Maven Filter进行配置文件替换时,意外导致部署后的Excel模板损坏。问题源于filter处理了包含Excel模板的src/main/resources目录。通过尝试排除模板目录、调整模板位置以及修改读取路径,最终解决了war包中Excel文件损坏的问题。

问题描述:

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

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

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

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

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

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

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


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

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

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


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

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

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

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


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

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


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




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值