在使用maven打包的时候,它会自动把resource下的字体文件移动到target文件夹下面,但是启动war的时候,每次都提示文件损坏,后来发现是maven在移动这个文件的时候,损坏了这个二进制文件。
原因是maven使用了maven-resource-plugin这个插件来拷贝资源文件,而这个插件有一个选项是<filtering>true<filtering/>,如果开启的话,只要是在classpath下的需要在打包时候用到的resource文件都被进行替换,也就是将会被映射成properties。但是这个操作只适用于文本文件,并不适用于二进制文件。
解决方案:
在build中添加<nonFileredFileExtensions>,将二进制文件指定不要映射
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>key</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
</plugins>
</build>
记录下文件路径问题
/D:/gitpro/项目名/target/TrafficAcquisition-1.0-RELEASE/WEB-INF/classes
Thread.currentThread().getContextClassLoader().getResource("/").getPath()
webapp地址:D:\gitpro\项目名\target\TrafficAcquisition-1.0-RELEASE\
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/")
版权声明:本文为chikai1原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。