protected boolean copyResourceIfExists()

in src/main/java/org/apache/maven/plugin/resources/remote/AbstractProcessRemoteResourcesMojo.java [603:652]


    protected boolean copyResourceIfExists(File file, String relFileName, VelocityContext context)
            throws IOException, MojoExecutionException {
        for (Resource resource : project.getResources()) {
            File resourceDirectory = new File(resource.getDirectory());

            if (!resourceDirectory.exists()) {
                continue;
            }

            // TODO - really should use the resource includes/excludes and name mapping
            File source = new File(resourceDirectory, relFileName);
            File templateSource = new File(resourceDirectory, relFileName + TEMPLATE_SUFFIX);

            if (!source.exists() && templateSource.exists()) {
                source = templateSource;
            }

            if (source.exists() && !source.equals(file)) {
                if (source == templateSource) {
                    try (DeferredFileOutputStream os =
                            new DeferredFileOutputStream(velocityFilterInMemoryThreshold, file)) {
                        try (Reader reader = getReader(source);
                                Writer writer = getWriter(os)) {
                            velocity.evaluate(context, writer, "", reader);
                        } catch (ParseErrorException | MethodInvocationException | ResourceNotFoundException e) {
                            throw new MojoExecutionException("Error rendering velocity resource: " + source, e);
                        }
                        fileWriteIfDiffers(os);
                    }
                } else if (resource.isFiltering()) {

                    MavenFileFilterRequest req = setupRequest(resource, source, file);

                    try {
                        fileFilter.copyFile(req);
                    } catch (MavenFilteringException e) {
                        throw new MojoExecutionException("Error filtering resource: " + source, e);
                    }
                } else {
                    FileUtils.copyFile(source, file);
                }

                // exclude the original (so eclipse doesn't complain about duplicate resources)
                resource.addExclude(relFileName);

                return true;
            }
        }
        return false;
    }