* since maven will not merge them correctly. Actually we have to fish this out of the model since maven mangles the xml for us.
*/
// private PlexusConfiguration instance;
public void execute() throws MojoExecutionException, MojoFailureException {
try {
PluginType metadata = new PluginType();
metadata.setName(project.getName());
metadata.setAuthor(project.getOrganization() == null? "unknown": project.getOrganization().getName());
metadata.setUrl(project.getOrganization() == null? "unknown": project.getOrganization().getUrl());
metadata.setDescription(project.getDescription());
metadata.setCategory(category);
metadata.setPluginGroup(pluginGroup);
if (project.getLicenses() != null) {
for (Object licenseObj : project.getLicenses()) {
License license = (License) licenseObj;
LicenseType licenseType = new LicenseType();
licenseType.setValue(license.getName());
licenseType.setOsiApproved(osiApproved);
metadata.getLicense().add(licenseType);
}
}
PluginArtifactType instance;
Plugin plugin = (Plugin) project.getModel().getBuild().getPluginsAsMap().get("org.apache.geronimo.buildsupport:car-maven-plugin");
if (plugin == null) {
throw new Error("Unable to resolve car plugin");
}
Xpp3Dom dom;
if (plugin.getExecutions().isEmpty()) {
dom = (Xpp3Dom) plugin.getConfiguration();
} else {
if (plugin.getExecutions().size() > 1) {
throw new IllegalStateException("Cannot determine correct configuration for PluginMetadataGeneratorMojo: " + plugin.getExecutionsAsMap().keySet());
}
dom = (Xpp3Dom) ((PluginExecution) plugin.getExecutions().get(0)).getConfiguration();
}
Xpp3Dom instanceDom = dom.getChild("instance");
if (instanceDom == null || instanceDom.getChild("plugin-artifact") == null) {
instance = new PluginArtifactType();
} else {
String instanceString = instanceDom.getChild("plugin-artifact").toString();
instance = PluginXmlUtil.loadPluginArtifactMetadata(new StringReader(instanceString.replace("#{", "${")));
}
if (this.commonInstance != null && this.commonInstance.getChild("plugin-artifact") != null) {
PluginArtifactType commonInstance = PluginXmlUtil.loadPluginArtifactMetadata(new StringReader(this.commonInstance.getChild("plugin-artifact").toString().replace("#{", "${")));
//merge
if (instance.getArtifactAlias().isEmpty()) {
instance.getArtifactAlias().addAll(commonInstance.getArtifactAlias());
}
if (instance.getConfigSubstitution().isEmpty()) {
instance.getConfigSubstitution().addAll(commonInstance.getConfigSubstitution());
}
//it doesn't make sense to copy a "generic" config.xml content into a specific module.
// if ((instance.getConfigXmlContent() == null || instance.getConfigXmlContent().getGbean().isEmpty())
// && (commonInstance.getConfigXmlContent() != null && !commonInstance.getConfigXmlContent().getGbean().isEmpty())) {
// instance.setConfigXmlContent(new ConfigXmlContentType());
// instance.getConfigXmlContent().getGbean().addAll(commonInstance.getConfigXmlContent().getGbean());
// }
if (instance.getCopyFile().isEmpty()) {
instance.getCopyFile().addAll(commonInstance.getCopyFile());
}
if (instance.getDependency().isEmpty()) {
instance.getDependency().addAll(commonInstance.getDependency());
}
if (instance.getGeronimoVersion().isEmpty()) {
instance.getGeronimoVersion().addAll(commonInstance.getGeronimoVersion());
}
if (instance.getJvmVersion().isEmpty()) {
instance.getJvmVersion().addAll(commonInstance.getJvmVersion());
}
if (instance.getObsoletes().isEmpty()) {
instance.getObsoletes().addAll(commonInstance.getObsoletes());
}
if (instance.getPrerequisite().isEmpty()) {
instance.getPrerequisite().addAll(commonInstance.getPrerequisite());
}
if (instance.getSourceRepository().isEmpty()) {
instance.getSourceRepository().addAll(commonInstance.getSourceRepository());
}
}
metadata.getPluginArtifact().add(instance);
ArtifactType artifactType = getModuleId();
ArtifactType existingArtifact = instance.getModuleId();
if (existingArtifact != null && existingArtifact.getType() != null) {
artifactType.setType(existingArtifact.getType());