前言
今天遇到一個問題,我們有個ip.dat二進製文件,通過裡面內容可以解析ip所在的地域信息,本地單元測試都是OK的,部署到測試環境後,發現解析ip的時候報錯。拿測試環境打印出的IP地址,在本地單元測試也麼有問題。最後發現:代碼庫的ip.dat文件大小只有3.5M左右,而測試環境的ip.dat文件大小在5M左右。
問題在於:為什麼ip.dat通過maven打包後文件變大了?由於maven打包的時候,會將這個文件從src/main/resources/下面拷貝的conf目錄下。我直接將ip.dat放在conf目錄下,而不是resources目錄下,發現打包後大小正常。
也就是說maven打包的過程中,只是將src/main/resources/目錄下的文件變大了。因為我們在pom中開啟了資源過濾。
<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource></resources>
解決方案
解決方案就很簡單了:直接將ip.dat放到conf目錄下不參與資源過濾就可以了。如果一定要將ip.dat放在resources目錄下,那麼可以通過下面配置解決。
<resources> <!--排除ip.dat,不打包到classpath下,自然就不會過濾--> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>ip.dat</exclude> </excludes> </resource> <!--將ip.dat打包到classpath下,但是不進行資源過濾--> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <includes> <include>ip.dat</include> </includes> </resource></resources>
使用maven進行資源過濾的時候,只要過濾需要過濾的文件,一些二進製文件,比如https證書等,就不要參與資源過濾,否則打包後會破壞文件內容。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。