这个问题原先出现过,现在由一次花时间解决,再次记录一下
背景:在pom文件中有变量需要在相应的yml和properties中替换一下,但是business目录下有二进制excel文件,这样在替换的时候就会把resource下面的所有文件统一打开过滤,导致二进制文件乱码
解决思路:扫描资源文件并替换的时候,跳过某些二进制文件,就是配置resource相关设置,例如网上说的如下操作:
<resources> <!-- Filter jdbc.properties & mail.properties. NOTE: We don't filter applicationContext-infrastructure.xml, let it go with spring's resource process mechanism. --> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <includes> <include>jdbc.properties</include> <include>mail.properties</include> </includes> </resource> <!-- Include other files as resources files. --> <resource> <directory>src/main/resources</directory> <filtering>false</filtering> <excludes> <exclude>jdbc.properties</exclude> <exclude>mail.properties</exclude> </excludes> </resource> </resources>
看着思路也是对的,首先把过滤固定的两个文件,但是其它文件都排除了;第二个再把排除的文件补回来并且不过滤‘;但是试验之后发现,第二个貌似没起作用,把静态页面什么的都干掉了,只剩下配置文件了
最终问题解决:
因为资源文件默认路径就是resouces下面,所有可以不写,直接在plugins下加入下面的插件即可,把需要不过滤的后缀加入即可:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <configuration> <encoding>UTF-8</encoding> <nonFilteredFileExtensions> <nonFilteredFileExtension>xls</nonFilteredFileExtension> <nonFilteredFileExtension>xlsx</nonFilteredFileExtension> <nonFilteredFileExtension>dll</nonFilteredFileExtension> <nonFilteredFileExtension>so</nonFilteredFileExtension> </nonFilteredFileExtensions> </configuration> </plugin>