in maven-plugin-tools-generators/src/main/java/org/apache/maven/tools/plugin/generator/PluginDescriptorFilesGenerator.java [105:205]
public void writeDescriptor(File destinationFile, PluginToolsRequest request, DescriptorType type)
throws IOException {
PluginDescriptor pluginDescriptor = request.getPluginDescriptor();
if (!destinationFile.getParentFile().exists()) {
destinationFile.getParentFile().mkdirs();
}
String apiVersion = request.getPluginDescriptor().getRequiredMavenVersion();
boolean isV4 = apiVersion != null && apiVersion.startsWith("4.");
try (Writer writer = new OutputStreamWriter(new CachingOutputStream(destinationFile), UTF_8)) {
XMLWriter w = new PrettyPrintXMLWriter(writer, UTF_8.name(), null);
final String additionalInfo;
switch (type) {
case LIMITED_FOR_HELP_MOJO:
additionalInfo = " (for help mojo with limited elements)";
break;
case XHTML:
additionalInfo = " (enhanced XHTML version (used for plugin:report))";
break;
default:
additionalInfo = "";
break;
}
w.writeMarkup("\n<!-- Generated by maven-plugin-tools " + getVersion() + additionalInfo + "-->\n\n");
w.startElement("plugin");
if (isV4) {
w.addAttribute("xmlns", "http://maven.apache.org/PLUGIN/2.0.0");
w.addAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
w.addAttribute(
"xsi:location",
"http://maven.apache.org/PLUGIN/2.0.0 https://maven.apache.org/xsd/plugin-2.0.0.xsd");
}
GeneratorUtils.element(w, "name", pluginDescriptor.getName());
GeneratorUtils.element(w, "description", pluginDescriptor.getDescription());
GeneratorUtils.element(w, "groupId", pluginDescriptor.getGroupId());
GeneratorUtils.element(w, "artifactId", pluginDescriptor.getArtifactId());
GeneratorUtils.element(w, "version", pluginDescriptor.getVersion());
GeneratorUtils.element(w, "goalPrefix", pluginDescriptor.getGoalPrefix());
if (type != DescriptorType.LIMITED_FOR_HELP_MOJO) {
GeneratorUtils.element(w, "isolatedRealm", String.valueOf(pluginDescriptor.isIsolatedRealm()));
GeneratorUtils.element(
w, "inheritedByDefault", String.valueOf(pluginDescriptor.isInheritedByDefault()));
if (pluginDescriptor instanceof ExtendedPluginDescriptor) {
ExtendedPluginDescriptor extPluginDescriptor = (ExtendedPluginDescriptor) pluginDescriptor;
if (StringUtils.isNotBlank(extPluginDescriptor.getRequiredJavaVersion())) {
GeneratorUtils.element(w, "requiredJavaVersion", extPluginDescriptor.getRequiredJavaVersion());
}
}
if (StringUtils.isNotBlank(pluginDescriptor.getRequiredMavenVersion())) {
GeneratorUtils.element(w, "requiredMavenVersion", pluginDescriptor.getRequiredMavenVersion());
}
}
w.startElement("mojos");
final JavadocLinkGenerator javadocLinkGenerator;
if (request.getInternalJavadocBaseUrl() != null
|| (request.getExternalJavadocBaseUrls() != null
&& !request.getExternalJavadocBaseUrls().isEmpty())) {
javadocLinkGenerator = new JavadocLinkGenerator(
request.getInternalJavadocBaseUrl(),
request.getInternalJavadocVersion(),
request.getExternalJavadocBaseUrls(),
request.getSettings());
} else {
javadocLinkGenerator = null;
}
if (pluginDescriptor.getMojos() != null) {
List<MojoDescriptor> descriptors = pluginDescriptor.getMojos();
PluginUtils.sortMojos(descriptors);
for (MojoDescriptor descriptor : descriptors) {
processMojoDescriptor(descriptor, w, type, javadocLinkGenerator, isV4);
}
}
w.endElement();
if (!isV4 && type != DescriptorType.LIMITED_FOR_HELP_MOJO) {
GeneratorUtils.writeDependencies(w, pluginDescriptor);
}
w.endElement();
writer.flush();
}
}