版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_26469555/article/details/89394581
問題描述
在項目中放置一個可供用戶登錄後下載的excel模版,項目在打包成功後,在target中直接打開excel,發現excel已經損壞。
問題原因
項目在編譯或者打包過程中,會對excel進行編譯,這樣經過文件filter過濾一遍之後,excel文件就損壞了,
具體原因還不清楚,還需要各位大佬具體分析一下。可以利用Maven resource配製中include與exclude的關係來解決這次問題。
問題未解決時的配置
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
解決後的配置
與是用來圈定和排除某一文件目錄下的文件是否是工程資源的。如果與劃定的範圍存在衝突時,以劃定的範圍爲準。大多數情況下,我們使用和是爲了配合實現過濾特定文件的需要。
例如,在一個工程中,src/main/resources目錄下都是工程的資源文件,並不需要和再進行劃定。但如果我們需要對其中的某一個或這兩個文件進行過濾的話,則需要藉助和進行配置
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.xlsx</exclude>
</excludes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xlsx</include>
</includes>
<filtering>false</filtering>
</resource>
其中第一段配置聲明:在src/main/resources目錄下,後綴是.xlsx的文件不是資源文件,其它的資源文件需要被過濾。而第二段配置聲明:同樣在src/main/resources目錄下,後綴是.xlsx的文件是資源文件,但是不會被過濾。
配置完成後,如果重新編輯(打包)沒有效果,需要maven claen 或者刪除target文件重新編譯一遍就可以啦。
在遇到這個問題的時候參考了 浪子豔少(https://blog.csdn.net/win7system/article/details/55519444) 的觀點,非常感謝。
------------------------------------