Skip to content

Commit

Permalink
Merge pull request #242 from thomashug/master
Browse files Browse the repository at this point in the history
Support exclusions on plugin dependencies
  • Loading branch information
gastaldi committed Nov 24, 2012
2 parents aa1ed84 + b266af2 commit 8830edc
Show file tree
Hide file tree
Showing 3 changed files with 305 additions and 110 deletions.
Expand Up @@ -11,6 +11,7 @@
import java.util.ArrayList;
import java.util.List;

import org.apache.maven.model.Exclusion;
import org.apache.maven.model.PluginExecution;
import org.codehaus.plexus.util.xml.Xpp3Dom;
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
Expand All @@ -34,7 +35,10 @@ public MavenPluginAdapter(final MavenPlugin mavenPlugin)
setVersion(dependency.getVersion());
setConfiguration(parseConfig(mavenPlugin.getConfig()));
setExecutions(transformExecutions(mavenPlugin));
setExtensions(mavenPlugin.isExtensionsEnabled());
if (mavenPlugin.isExtensionsEnabled())
{
setExtensions(true);
}
setDependencies(transformDependencies(mavenPlugin));
}

Expand All @@ -48,11 +52,25 @@ private List<org.apache.maven.model.Dependency> transformDependencies(MavenPlugi
pluginDependency.setGroupId(dependency.getGroupId());
pluginDependency.setVersion(dependency.getVersion());
pluginDependency.setScope(dependency.getScopeType());
pluginDependency.setExclusions(transformExclusions(dependency.getExcludedDependencies()));
dependencies.add(pluginDependency);
}
return dependencies;
}

private List<Exclusion> transformExclusions(List<Dependency> excludedDependencies)
{
List<Exclusion> result = new ArrayList<Exclusion>(excludedDependencies.size());
for (Dependency dependency : excludedDependencies)
{
Exclusion exclusion = new Exclusion();
exclusion.setArtifactId(dependency.getArtifactId());
exclusion.setGroupId(dependency.getGroupId());
result.add(exclusion);
}
return result;
}

private List<PluginExecution> transformExecutions(final MavenPlugin mavenPlugin)
{
List<PluginExecution> executions = new ArrayList<PluginExecution>();
Expand All @@ -78,8 +96,7 @@ private Xpp3Dom parseConfig(final Configuration configuration)

try {
return Xpp3DomBuilder.build(
new ByteArrayInputStream(
configuration.toString().getBytes()), "UTF-8");
new ByteArrayInputStream(configuration.toString().getBytes()), "UTF-8");
}
catch (Exception ex) {
throw new RuntimeException("Exception while parsing configuration", ex);
Expand Down
Expand Up @@ -15,117 +15,163 @@
/**
* @author <a href="mailto:paul.bakker.nl@gmail.com">Paul Bakker</a>
*/
public class MavenPluginImpl implements MavenPlugin {

private Dependency dependency;
private Configuration configuration;
private final List<Execution> executions = new ArrayList<Execution>();
private boolean extensions;
private List<Dependency> pluginDependencies = new ArrayList<Dependency>();

public MavenPluginImpl() {
}

public MavenPluginImpl(final MavenPlugin plugin) {
this.dependency = plugin.getDependency();
this.configuration = plugin.getConfig();
}

@Override
public Dependency getDependency() {
return dependency;
}

public void setDependency(final Dependency dependency) {
this.dependency = dependency;
}

@Override
public Configuration getConfig() {
if (configuration == null) {
configuration = ConfigurationBuilder.create();
}
return configuration;
}

@Override
public List<Execution> listExecutions() {
return executions;
}

@Override
public boolean isExtensionsEnabled() {
return extensions;
}

@Override
public List<Dependency> getDirectDependencies() {
return pluginDependencies;
}

@Override
public String toString() {
StringBuilder b = new StringBuilder("<plugin>");
appendDependency(b, dependency);

if(extensions) {
b.append("<extensions>true</extensions>");
}

if (configuration != null) {
b.append(configuration.toString());
}

if (executions.size() > 0) {
b.append("<executions>");
for (Execution execution : executions) {
b.append(execution.toString());
}
b.append("</executions>");
}

if (pluginDependencies.size() > 0) {
b.append("<dependencies>");
for (Dependency pluginDependency : pluginDependencies) {
b.append("<dependency>");
appendDependency(b, pluginDependency);
b.append("</dependency>");
}
b.append("</dependencies>");
}

b.append("</plugin>");
return b.toString();
}

public void setConfiguration(final Configuration configuration) {
this.configuration = configuration;
}

public void addExecution(final Execution execution) {
executions.add(execution);
}

public void setExtenstions(boolean extenstions) {
this.extensions = extenstions;
}

public void addPluginDependency(final Dependency dependency) {
pluginDependencies.add(dependency);
}

private void appendDependency(StringBuilder buffer, Dependency appendDependency) {
if (appendDependency.getGroupId() != null) {
buffer.append("<groupId>").append(appendDependency.getGroupId()).append("</groupId>");
public class MavenPluginImpl implements MavenPlugin
{

private Dependency dependency;
private Configuration configuration;
private final List<Execution> executions = new ArrayList<Execution>();
private boolean extensions;
private List<Dependency> pluginDependencies = new ArrayList<Dependency>();

public MavenPluginImpl()
{
}

public MavenPluginImpl(final MavenPlugin plugin)
{
this.dependency = plugin.getDependency();
this.configuration = plugin.getConfig();
}

@Override
public Dependency getDependency()
{
return dependency;
}

public void setDependency(final Dependency dependency)
{
this.dependency = dependency;
}

@Override
public Configuration getConfig()
{
if (configuration == null)
{
configuration = ConfigurationBuilder.create();
}
return configuration;
}

@Override
public List<Execution> listExecutions()
{
return executions;
}

@Override
public boolean isExtensionsEnabled()
{
return extensions;
}

@Override
public List<Dependency> getDirectDependencies()
{
return pluginDependencies;
}

@Override
public String toString()
{
StringBuilder b = new StringBuilder("<plugin>");
appendDependency(b, dependency);

if (extensions)
{
b.append("<extensions>true</extensions>");
}

if (configuration != null)
{
b.append(configuration.toString());
}

if (executions.size() > 0)
{
b.append("<executions>");
for (Execution execution : executions)
{
b.append(execution.toString());
}
b.append("</executions>");
}

if (pluginDependencies.size() > 0)
{
b.append("<dependencies>");
for (Dependency pluginDependency : pluginDependencies)
{
b.append("<dependency>");
appendDependency(b, pluginDependency);
b.append("</dependency>");
}
b.append("</dependencies>");
}

b.append("</plugin>");
return b.toString();
}

public void setConfiguration(final Configuration configuration)
{
this.configuration = configuration;
}

public void addExecution(final Execution execution)
{
executions.add(execution);
}

public void setExtenstions(boolean extenstions)
{
this.extensions = extenstions;
}

public void addPluginDependency(final Dependency dependency)
{
pluginDependencies.add(dependency);
}

private void appendDependency(StringBuilder builder, Dependency appendDependency)
{
appendDependencyData(builder, appendDependency, true);
if (!appendDependency.getExcludedDependencies().isEmpty())
{
builder.append("<exclusions>");
for (Dependency exclusion : appendDependency.getExcludedDependencies())
{
appendExclusion(builder, exclusion);
}
builder.append("</exclusions>");
}
}

private void appendExclusion(StringBuilder builder, Dependency exclusion)
{
builder.append("<exclusion>");
appendDependencyData(builder, exclusion, false);
builder.append("</exclusion>");
}

private void appendDependencyData(StringBuilder builder, Dependency dependency, boolean withVersion)
{
if (dependency.getGroupId() != null)
{
builder.append("<groupId>").append(dependency.getGroupId()).append("</groupId>");
}

if (appendDependency.getArtifactId() != null) {
buffer.append("<artifactId>").append(appendDependency.getArtifactId()).append("</artifactId>");
if (dependency.getArtifactId() != null)
{
builder.append("<artifactId>").append(dependency.getArtifactId()).append("</artifactId>");
}

if (appendDependency.getVersion() != null) {
buffer.append("<version>").append(appendDependency.getVersion()).append("</version>");
if (withVersion && dependency.getVersion() != null)
{
builder.append("<version>").append(dependency.getVersion()).append("</version>");
}
}
}

}

0 comments on commit 8830edc

Please sign in to comment.