protected void handleDeploymentDescriptors()

in src/main/java/org/apache/maven/plugins/war/packaging/WarProjectPackagingTask.java [203:271]


    protected void handleDeploymentDescriptors(
            WarPackagingContext context, File webinfDir, File metainfDir, Boolean failOnMissingWebXml)
            throws MojoFailureException, MojoExecutionException {
        try {
            if (webXml != null && StringUtils.isNotEmpty(webXml.getName())) {
                if (!webXml.exists() && (failOnMissingWebXml == null || Boolean.TRUE.equals(failOnMissingWebXml))) {
                    throw new MojoFailureException("The specified web.xml file '" + webXml + "' does not exist");
                }

                // Making sure that it won't get overlayed
                context.getWebappStructure().registerFileForced(id, WEB_INF_PATH + "/web.xml");

                if (context.isFilteringDeploymentDescriptors()) {
                    context.getMavenFileFilter()
                            .copyFile(
                                    webXml,
                                    new File(webinfDir, "web.xml"),
                                    true,
                                    context.getFilterWrappers(),
                                    getEncoding(webXml));
                } else {
                    copyFile(context, webXml, new File(webinfDir, "web.xml"), "WEB-INF/web.xml", true);
                }
            } else {
                // the webXml can be the default one
                File defaultWebXml = new File(context.getWebappSourceDirectory(), WEB_INF_PATH + "/web.xml");
                // if exists we can filter it
                if (defaultWebXml.exists() && context.isFilteringDeploymentDescriptors()) {
                    context.getWebappStructure().registerFile(id, WEB_INF_PATH + "/web.xml");
                    context.getMavenFileFilter()
                            .copyFile(
                                    defaultWebXml,
                                    new File(webinfDir, "web.xml"),
                                    true,
                                    context.getFilterWrappers(),
                                    getEncoding(defaultWebXml));
                }
            }

            if (containerConfigXML != null && StringUtils.isNotEmpty(containerConfigXML.getName())) {
                String xmlFileName = containerConfigXML.getName();

                context.getWebappStructure().registerFileForced(id, META_INF_PATH + "/" + xmlFileName);

                if (context.isFilteringDeploymentDescriptors()) {
                    context.getMavenFileFilter()
                            .copyFile(
                                    containerConfigXML,
                                    new File(metainfDir, xmlFileName),
                                    true,
                                    context.getFilterWrappers(),
                                    getEncoding(containerConfigXML));
                } else {
                    copyFile(
                            context,
                            containerConfigXML,
                            new File(metainfDir, xmlFileName),
                            "META-INF/" + xmlFileName,
                            true);
                }
            }
        } catch (IOException e) {
            if (failOnMissingWebXml == null || Boolean.TRUE.equals(failOnMissingWebXml)) {
                throw new MojoExecutionException("Failed to copy deployment descriptor", e);
            }
        } catch (MavenFilteringException e) {
            throw new MojoExecutionException("Failed to copy deployment descriptor", e);
        }
    }