1.问题
将静态文件拷贝到static/public/resource文件夹下访问时,图标与字体文件会进行过滤导致损坏,需要在pom文件中进行设置。
2.原因
默认情况下,如果没有指定resources,目前认为自动会将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。如果设定了resources,那么默认的就会失效,就会以指定的includes和excludes为准。例如,为了使打包的jar包里头包含.java源文件。
3.解决方法
<!-- pom文件增加配置 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
<resources>
<!-- mybatis的mapper.xml文件,在src/main/java下面,这些文件不会被打包的(maven认为src/main/java只是java的源代码路径) -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<!-- 替换占位符 -->
<filtering>false</filtering>
</resource>
<resource>
<!-- 排除指定文件类型,替换占位符 -->
<filtering>true</filtering>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.woff</exclude>
<exclude>**/*.ttf</exclude>
<exclude>**/*.ico</exclude>
</excludes>
</resource>
<resource>
<!-- 打包指定文件类型,不替换占位符 -->
<filtering>false</filtering>
<directory>src/main/resources</directory>
<includes>
<include>**/*.woff</include>
<include>**/*.ttf</include>
<include>**/*.ico</include>
</includes>
</resource>
</resources>
</build>
4.参数说明
参数 | 说明 | |
---|---|---|
targetPath | 指定build资源到哪个目录,默认是base directory。 | |
filtering | 指定是否将filter文件(即build下的filters里定义的*.property文件)的变量值在这个resource文件有效,例如上面就指定那些变量值在configuration文件无效。 | |
directory | 指定属性文件的目录,build的过程需要找到它,并且将其放到targetPath下,默认的directory是${basedir}/src/main/resources。 | |
includes | 指定包含文件的patterns,符合样式并且在directory目录下的文件将会包含进project的资源文件。 | |
excludes | 指定不包含在内的patterns,如果inclues与excludes有冲突,那么excludes胜利,那些符合冲突的样式的文件是不会包含进来的。 | |
testResources | 这个模块包含测试资源元素,其内容定义与resources类似,不同的一点是默认的测试资源路径是${basedir}/src/test/resources,测试资源是不部署的。 |