过滤:高级技术

本文档中描述了以下功能:

  • 转义不应过滤的属性
  • 根据扩展名忽略文件

转义属性

可能需要过滤文件中的某些属性并忽略另一个。过滤机制不会触及无法识别的令牌(即表示未知属性)。如果该属性显然是已知的,那么这将不起作用,因此应该明确地对其进行转义。

以下配置定义了 的值,escapeString如果它以该值开始,它将停止属性的插值

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
           <filtering>true</filtering>
           <escapeString>\</escapeString>
           [...]
        </configuration>
      </plugin>
    </plugins>
  </build>

假设以下文件

jdbc.url=${db.url}
jdbc.user=${db.username}
jdbc.password=${db.password}

使用此配置过滤此类文件的内容将产生此内容。请注意,如果需要,现在可以稍后以通常的方式过滤转义的属性!

jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.user=someuser
jdbc.password=${db.password}

根据扩展名忽略文件

过滤二进制文件会损坏它们,因此可能需要根据扩展名从过滤中排除文件。为此,请按如下方式配置插件

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-ear-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
           <filtering>true</filtering>
           <nonFilteredFileExtensions>
             <nonFilteredFileExtension>png</nonFilteredFileExtension>
             <nonFilteredFileExtension>jpeg</nonFilteredFileExtension>
           </nonFilteredFileExtensions>
           [...]
        </configuration>
      </plugin>
    </plugins>
  </build>