Skip to content

Add per-resource nonFilteredFiles glob config and gracefulBinaryHandling option #521

Description

@gnodet

Problem

maven-resources-plugin exposes <nonFilteredFileExtensions> for bypassing text filtering on binary files, but this is insufficient for projects that:

  • Have extension-less binary files (test keystores, generated fixtures)
  • Want path-based exclusions (e.g. all files under src/main/resources/certs/)
  • Want to be surgical per <resource> block rather than globally

See #303 for a concrete user report.

Proposed Solution

Once maven-filtering adds List<String> nonFilteredFiles to Resource (companion issue), expose it in ResourcesMojo and TestResourcesMojo as:

Per-resource config (primary — per <resource> block)

<resource>
  <directory>src/main/resources</directory>
  <filtering>true</filtering>
  <nonFilteredFiles>
    <nonFilteredFile>**/*.p12</nonFilteredFile>
    <nonFilteredFile>**/*.jks</nonFilteredFile>
    <nonFilteredFile>**/certs/**</nonFilteredFile>
    <nonFilteredFile>binary-file</nonFilteredFile>
  </nonFilteredFiles>
</resource>

Global opt-in graceful binary fallback (safety net)

Add a <gracefulBinaryHandling> boolean parameter (default false) at the Mojo level, propagated to MavenResourcesExecution.setGracefulBinaryHandling(true). When enabled, files that cause MalformedInputException during filtering are copied as-is with a WARN log rather than crashing the build.

<configuration>
  <gracefulBinaryHandling>true</gracefulBinaryHandling>
</configuration>

See also

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions