protected void filter(File sourceFile, File targetFile) throws MojoExecutionException {
    try {

      if (StringUtils.isEmpty(encoding)) {
        getLog()
            .warn(
                "File encoding has not been set, using platform encoding "
                    + ReaderFactory.FILE_ENCODING
                    + ", i.e. build is platform dependent!");
      }
      targetFile.getParentFile().mkdirs();

      final MavenResourcesExecution mre = new MavenResourcesExecution();
      mre.setMavenProject(project);
      mre.setMavenSession(mavenSession);
      mre.setFilters(null);
      mre.setEscapedBackslashesInFilePath(true);
      final LinkedHashSet<String> delimiters = new LinkedHashSet<>();
      delimiters.add("${*}");
      mre.setDelimiters(delimiters);

      @SuppressWarnings("rawtypes")
      List filters = mavenFileFilter.getDefaultFilterWrappers(mre);
      mavenFileFilter.copyFile(sourceFile, targetFile, true, filters, encoding, true);
    } catch (MavenFilteringException e) {
      throw new MojoExecutionException(e.getMessage(), e);
    }
  }
  private void filterResources() throws MojoExecutionException {
    try {
      MavenResourcesExecution execution =
          new MavenResourcesExecution(
              getResources(),
              getFilteredAppDirectory(),
              project,
              encoding,
              filters,
              Collections.EMPTY_LIST,
              session);
      execution.setEscapeWindowsPaths(escapeWindowsPaths);
      execution.setSupportMultiLineFiltering(supportMultiLineFiltering);
      if (nonFilteredFileExtensions != null) {
        execution.setNonFilteredFileExtensions(nonFilteredFileExtensions);
      }

      resourceFilter.filterResources(execution);
    } catch (MavenFilteringException e) {
      throw new MojoExecutionException("Error while filtering Mule config files", e);
    }
  }