return Collections.unmodifiableList(results);
}
@Override
public MavenPlugin merge(final MavenPlugin dominant, final MavenPlugin recessive) {
MavenPluginAdapter merged = new MavenPluginAdapter(dominant);
if (DependencyBuilder.areEquivalent(dominant.getDependency(), recessive.getDependency()))
{
MavenPluginAdapter recessiveAdaptater = new MavenPluginAdapter(recessive);
// Merge the configurations
Xpp3Dom mergedDomConfig = Xpp3Dom.mergeXpp3Dom((Xpp3Dom)merged.getConfiguration(),(Xpp3Dom)recessiveAdaptater.getConfiguration());
merged.setConfiguration(mergedDomConfig);
// Merge the executions
List<PluginExecution> mergedExecutions = mergePluginsExecutions(merged.getExecutionsAsMap(),recessiveAdaptater.getExecutionsAsMap());
merged.setExecutions(mergedExecutions);
// Merge dependencies; only version required, we already know that groupId and artifactId are equals
if (Strings.isNullOrEmpty(merged.getVersion())) {
merged.setVersion(recessiveAdaptater.getVersion());
}
// Extension flag
if (Strings.isNullOrEmpty(merged.getExtensions())) {
merged.setExtensions(recessiveAdaptater.getExtensions());
}
// Inherited flag
if (Strings.isNullOrEmpty(merged.getInherited())) {
merged.setExtensions(recessiveAdaptater.getInherited());
}
}
return merged;
}