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);
}
}