Interface ContentFilterable

All Known Subinterfaces:
CopyProcessingSpec, CopySpec, FileCopyDetails, SyncSpec
All Known Implementing Classes:
AbstractArchiveTask, AbstractCopyTask, Copy, Ear, Jar, Jar, ProcessResources, Sync, Tar, War, Zip

public interface ContentFilterable
Represents some binary resource whose content can be filtered.
  • Method Details

    • filter

      ContentFilterable filter(Map<String,?> properties, Class<? extends FilterReader> filterType)

      Adds a content filter to be used during the copy. Multiple calls to filter, add additional filters to the filter chain. Each filter should implement java.io.FilterReader. Include org.apache.tools.ant.filters.* for access to all the standard Ant filters.

      Filter properties may be specified using groovy map syntax.

      Examples:

          filter(HeadFilter, lines:25, skip:2)
          filter(ReplaceTokens, tokens:[copyright:'2009', version:'2.3.1'])
       
      Parameters:
      properties - map of filter properties
      filterType - Class of filter to add
      Returns:
      this
    • filter

      ContentFilterable filter(Class<? extends FilterReader> filterType)

      Adds a content filter to be used during the copy. Multiple calls to filter, add additional filters to the filter chain. Each filter should implement java.io.FilterReader. Include org.apache.tools.ant.filters.* for access to all the standard Ant filters.

      Examples:

          filter(StripJavaComments)
          filter(com.mycompany.project.CustomFilter)
       
      Parameters:
      filterType - Class of filter to add
      Returns:
      this
    • filter

      ContentFilterable filter(Closure closure)
      Adds a content filter based on the provided closure. The Closure will be called with each line (stripped of line endings) and should return a String to replace the line or null to remove the line. If every line is removed, the result will be an empty file, not an absent one.
      Parameters:
      closure - to implement line based filtering
      Returns:
      this
    • filter

      ContentFilterable filter(Transformer<@Nullable String,String> transformer)
      Adds a content filter based on the provided transformer. The Closure will be called with each line (stripped of line endings) and should return a String to replace the line or null to remove the line. If every line is removed, the result will be an empty file, not an absent one.
      Parameters:
      transformer - to implement line based filtering
      Returns:
      this
    • expand

      ContentFilterable expand(Map<String,?> properties)

      Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's SimpleTemplateEngine. This means you can use simple property references, such as $property or ${property} in the file. You can also include arbitrary Groovy code in the file, such as ${version ?: 'unknown'} or ${classpath*.name.join(' ')}

      Note that all escape sequences (\n, \t, \\, etc) are converted to the symbols they represent, so, for example, \n becomes newline. If this is undesirable then expand(Map, Action) should be used to disable this behavior.

      Parameters:
      properties - reference-to-value map for substitution
      Returns:
      this
    • expand

      ContentFilterable expand(Map<String,?> properties, Action<? super ExpandDetails> action)

      Expands property references in each file as it is copied. More specifically, each file is transformed using Groovy's SimpleTemplateEngine. This means you can use simple property references, such as $property or ${property} in the file. You can also include arbitrary Groovy code in the file, such as ${version ?: 'unknown'} or ${classpath*.name.join(' ')}. The template engine can be configured with the provided action.

      Note that by default all escape sequences (\n, \t, \\, etc) are converted to the symbols they represent, so, for example, \n becomes newline. This behavior is controlled by ExpandDetails.getEscapeBackslash() property. It should be set to true to disable escape sequences conversion:

        expand(one: '1', two: 2) {
            escapeBackslash = true
        }
       
      Parameters:
      properties - reference-to-value map for substitution
      action - action to perform additional configuration of the underlying template engine
      Returns:
      this
      Since:
      7.2