resolve conflicts for plugins and plugin dependencies

This commit is contained in:
Sebastian Sdorra
2013-06-06 08:45:46 +02:00
parent 18c1c5ed01
commit f6cc5898f7

View File

@@ -30,6 +30,7 @@
*/ */
package sonia.scm.plugin; package sonia.scm.plugin;
//~--- non-JDK imports -------------------------------------------------------- //~--- non-JDK imports --------------------------------------------------------
@@ -43,6 +44,7 @@ import org.sonatype.aether.RepositorySystem;
import org.sonatype.aether.RepositorySystemSession; import org.sonatype.aether.RepositorySystemSession;
import org.sonatype.aether.collection.CollectRequest; import org.sonatype.aether.collection.CollectRequest;
import org.sonatype.aether.collection.DependencyCollectionException; import org.sonatype.aether.collection.DependencyCollectionException;
import org.sonatype.aether.collection.DependencyGraphTransformer;
import org.sonatype.aether.graph.Dependency; import org.sonatype.aether.graph.Dependency;
import org.sonatype.aether.graph.DependencyFilter; import org.sonatype.aether.graph.DependencyFilter;
import org.sonatype.aether.graph.DependencyNode; import org.sonatype.aether.graph.DependencyNode;
@@ -56,6 +58,13 @@ import org.sonatype.aether.resolution.DependencyResolutionException;
import org.sonatype.aether.util.artifact.DefaultArtifact; import org.sonatype.aether.util.artifact.DefaultArtifact;
import org.sonatype.aether.util.artifact.JavaScopes; import org.sonatype.aether.util.artifact.JavaScopes;
import org.sonatype.aether.util.filter.DependencyFilterUtils; import org.sonatype.aether.util.filter.DependencyFilterUtils;
import org.sonatype.aether.util.graph.transformer
.ChainedDependencyGraphTransformer;
import org.sonatype.aether.util.graph.transformer.ConflictMarker;
import org.sonatype.aether.util.graph.transformer.JavaDependencyContextRefiner;
import org.sonatype.aether.util.graph.transformer.JavaEffectiveScopeCalculator;
import org.sonatype.aether.util.graph.transformer
.NearestVersionConflictResolver;
import sonia.scm.config.ScmConfiguration; import sonia.scm.config.ScmConfiguration;
import sonia.scm.net.Proxies; import sonia.scm.net.Proxies;
@@ -174,7 +183,7 @@ public final class Aether
if (configuration.isEnableProxy()) if (configuration.isEnableProxy())
{ {
logger.debug("enable proxy selector to collect dependencies"); logger.debug("enable proxy selector to collect dependencies");
session.setProxySelector(new DefaultProxySelector(configuration)); session.setProxySelector(new DefaultProxySelector(configuration));
} }
@@ -183,6 +192,18 @@ public final class Aether
session.setLocalRepositoryManager(localRepositoryManager); session.setLocalRepositoryManager(localRepositoryManager);
// create graph transformer to resolve dependency conflicts
//J-
DependencyGraphTransformer dgt = new ChainedDependencyGraphTransformer(
new ConflictMarker(),
new JavaEffectiveScopeCalculator(),
new NearestVersionConflictResolver(),
new JavaDependencyContextRefiner()
);
//J+
session.setDependencyGraphTransformer(dgt);
return session; return session;
} }