一、问题背景

Maven项目中打包使用Maven Resources Plugin拷贝配置文件,使用Filtering来处理项目配置文件中的变量,POM文件如下所示:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
<testResources>
    <testResource>
        <directory>src/test/resources</directory>
        <filtering>true</filtering>
    </testResource>
</testResources>

但是对于项目配置文件目录下的二进制文件,经过Filtering处理后,文件内容发生了变化,如pdf, ddl文件内容被修改,导致打包后的文件无法正常使用。

二、解决方案

Maven Resources Plugin提供了Binary filtering配置项,阻止二进制文件被filtering,配置案例:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          ...
          <nonFilteredFileExtensions>
            <nonFilteredFileExtension>pdf</nonFilteredFileExtension>
            <nonFilteredFileExtension>swf</nonFilteredFileExtension>
          </nonFilteredFileExtensions>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

nonFilteredFileExtension添加文件扩展名可以阻止文件被filtering。

参考文档

Apache Maven Resources Plugin
Apache Maven Resources Plugin/ Binaries Filtering