mirror of https://github.com/apache/archiva.git
lot of code cleanup for dependency tree
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1368580 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4c24639c91
commit
c2aa60f68f
|
@ -57,8 +57,6 @@ import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.maven.project.DependencyResolutionResult;
|
|
||||||
import org.apache.maven.shared.dependency.tree.DependencyTreeBuilderException;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
@ -445,15 +443,17 @@ public class DefaultBrowseService
|
||||||
*/
|
*/
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DependencyResolutionResult result =
|
|
||||||
maven3DependencyTreeBuilder.buildDependencyTree( selectedRepos, groupId, artifactId, version, treeDependencyNodeVisitor );
|
maven3DependencyTreeBuilder.buildDependencyTree( selectedRepos, groupId, artifactId, version,
|
||||||
log.debug( "result: {}", result );
|
treeDependencyNodeVisitor );
|
||||||
|
|
||||||
}
|
}
|
||||||
catch ( Exception e )
|
catch ( Exception e )
|
||||||
{
|
{
|
||||||
log.error( e.getMessage(), e );
|
log.error( e.getMessage(), e );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.debug( "treeEntrie: {}", treeEntries );
|
||||||
return treeEntries;
|
return treeEntries;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,10 +73,6 @@
|
||||||
<groupId>org.apache.maven</groupId>
|
<groupId>org.apache.maven</groupId>
|
||||||
<artifactId>maven-artifact</artifactId>
|
<artifactId>maven-artifact</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.apache.maven</groupId>
|
|
||||||
<artifactId>maven-core</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.maven</groupId>
|
<groupId>org.apache.maven</groupId>
|
||||||
<artifactId>maven-artifact-manager</artifactId>
|
<artifactId>maven-artifact-manager</artifactId>
|
||||||
|
|
|
@ -31,52 +31,30 @@ import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;
|
||||||
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
|
import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
|
||||||
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
|
import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
|
||||||
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
|
import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
|
||||||
import org.apache.archiva.metadata.repository.storage.maven2.RepositoryModelResolver;
|
|
||||||
import org.apache.archiva.proxy.common.WagonFactory;
|
import org.apache.archiva.proxy.common.WagonFactory;
|
||||||
import org.apache.maven.RepositoryUtils;
|
|
||||||
import org.apache.maven.artifact.Artifact;
|
import org.apache.maven.artifact.Artifact;
|
||||||
import org.apache.maven.artifact.factory.ArtifactFactory;
|
import org.apache.maven.artifact.factory.ArtifactFactory;
|
||||||
import org.apache.maven.artifact.versioning.VersionRange;
|
|
||||||
import org.apache.maven.model.DependencyManagement;
|
|
||||||
import org.apache.maven.model.Exclusion;
|
|
||||||
import org.apache.maven.model.Model;
|
|
||||||
import org.apache.maven.model.building.DefaultModelBuilderFactory;
|
import org.apache.maven.model.building.DefaultModelBuilderFactory;
|
||||||
import org.apache.maven.model.building.DefaultModelBuildingRequest;
|
|
||||||
import org.apache.maven.model.building.ModelBuilder;
|
import org.apache.maven.model.building.ModelBuilder;
|
||||||
import org.apache.maven.model.building.ModelBuildingException;
|
|
||||||
import org.apache.maven.model.building.ModelBuildingRequest;
|
|
||||||
import org.apache.maven.model.resolution.UnresolvableModelException;
|
|
||||||
import org.apache.maven.project.DefaultDependencyResolutionRequest;
|
|
||||||
import org.apache.maven.project.DefaultProjectBuildingRequest;
|
|
||||||
import org.apache.maven.project.DependencyResolutionException;
|
|
||||||
import org.apache.maven.project.DependencyResolutionResult;
|
|
||||||
import org.apache.maven.project.MavenProject;
|
|
||||||
import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
|
import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
|
||||||
import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
|
import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
|
||||||
import org.apache.maven.repository.internal.DefaultVersionResolver;
|
import org.apache.maven.repository.internal.DefaultVersionResolver;
|
||||||
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
|
import org.apache.maven.repository.internal.MavenRepositorySystemSession;
|
||||||
import org.codehaus.plexus.util.StringUtils;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.sonatype.aether.RepositorySystem;
|
import org.sonatype.aether.RepositorySystem;
|
||||||
import org.sonatype.aether.RepositorySystemSession;
|
import org.sonatype.aether.RepositorySystemSession;
|
||||||
import org.sonatype.aether.RequestTrace;
|
|
||||||
import org.sonatype.aether.artifact.ArtifactType;
|
|
||||||
import org.sonatype.aether.artifact.ArtifactTypeRegistry;
|
|
||||||
import org.sonatype.aether.collection.CollectRequest;
|
import org.sonatype.aether.collection.CollectRequest;
|
||||||
import org.sonatype.aether.collection.CollectResult;
|
import org.sonatype.aether.collection.CollectResult;
|
||||||
import org.sonatype.aether.collection.DependencyCollectionException;
|
import org.sonatype.aether.collection.DependencyCollectionException;
|
||||||
import org.sonatype.aether.connector.file.FileRepositoryConnectorFactory;
|
import org.sonatype.aether.connector.file.FileRepositoryConnectorFactory;
|
||||||
import org.sonatype.aether.graph.Dependency;
|
import org.sonatype.aether.graph.Dependency;
|
||||||
import org.sonatype.aether.graph.DependencyFilter;
|
|
||||||
import org.sonatype.aether.graph.DependencyVisitor;
|
import org.sonatype.aether.graph.DependencyVisitor;
|
||||||
import org.sonatype.aether.impl.ArtifactDescriptorReader;
|
import org.sonatype.aether.impl.ArtifactDescriptorReader;
|
||||||
import org.sonatype.aether.impl.VersionRangeResolver;
|
import org.sonatype.aether.impl.VersionRangeResolver;
|
||||||
import org.sonatype.aether.impl.VersionResolver;
|
import org.sonatype.aether.impl.VersionResolver;
|
||||||
import org.sonatype.aether.impl.internal.DefaultServiceLocator;
|
import org.sonatype.aether.impl.internal.DefaultServiceLocator;
|
||||||
import org.sonatype.aether.impl.internal.SimpleLocalRepositoryManager;
|
|
||||||
import org.sonatype.aether.repository.LocalRepository;
|
import org.sonatype.aether.repository.LocalRepository;
|
||||||
import org.sonatype.aether.resolution.DependencyRequest;
|
|
||||||
import org.sonatype.aether.spi.connector.ArtifactDownload;
|
import org.sonatype.aether.spi.connector.ArtifactDownload;
|
||||||
import org.sonatype.aether.spi.connector.ArtifactUpload;
|
import org.sonatype.aether.spi.connector.ArtifactUpload;
|
||||||
import org.sonatype.aether.spi.connector.MetadataDownload;
|
import org.sonatype.aether.spi.connector.MetadataDownload;
|
||||||
|
@ -84,12 +62,7 @@ import org.sonatype.aether.spi.connector.MetadataUpload;
|
||||||
import org.sonatype.aether.spi.connector.RepositoryConnector;
|
import org.sonatype.aether.spi.connector.RepositoryConnector;
|
||||||
import org.sonatype.aether.spi.connector.RepositoryConnectorFactory;
|
import org.sonatype.aether.spi.connector.RepositoryConnectorFactory;
|
||||||
import org.sonatype.aether.transfer.NoRepositoryConnectorException;
|
import org.sonatype.aether.transfer.NoRepositoryConnectorException;
|
||||||
import org.sonatype.aether.util.DefaultRepositorySystemSession;
|
|
||||||
import org.sonatype.aether.util.DefaultRequestTrace;
|
|
||||||
import org.sonatype.aether.util.artifact.ArtifacIdUtils;
|
|
||||||
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.version.VersionConstraint;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
@ -98,9 +71,7 @@ import javax.inject.Named;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.IdentityHashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -152,9 +123,8 @@ public class Maven3DependencyTreeBuilder
|
||||||
builder = defaultModelBuilderFactory.newInstance();
|
builder = defaultModelBuilderFactory.newInstance();
|
||||||
}
|
}
|
||||||
|
|
||||||
public DependencyResolutionResult buildDependencyTree( List<String> repositoryIds, String groupId,
|
public void buildDependencyTree( List<String> repositoryIds, String groupId, String artifactId, String version,
|
||||||
String artifactId, String version,
|
DependencyVisitor dependencyVisitor )
|
||||||
DependencyVisitor dependencyVisitor )
|
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
Artifact projectArtifact = factory.createProjectArtifact( groupId, artifactId, version );
|
Artifact projectArtifact = factory.createProjectArtifact( groupId, artifactId, version );
|
||||||
|
@ -172,7 +142,7 @@ public class Maven3DependencyTreeBuilder
|
||||||
if ( repository == null )
|
if ( repository == null )
|
||||||
{
|
{
|
||||||
// metadata could not be resolved
|
// metadata could not be resolved
|
||||||
return new DefaultDependencyResolutionResult();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// MRM-1411
|
// MRM-1411
|
||||||
|
@ -199,158 +169,14 @@ public class Maven3DependencyTreeBuilder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Model model = buildProject(
|
|
||||||
new RepositoryModelResolver( repository, pathTranslator, wagonFactory, remoteRepositories, networkProxies,
|
|
||||||
repository ), groupId, artifactId, version );
|
|
||||||
|
|
||||||
MavenProject project = new MavenProject( model );
|
|
||||||
|
|
||||||
DefaultRepositorySystemSession repositorySystemSession = new DefaultRepositorySystemSession();
|
|
||||||
|
|
||||||
// FIXME take care of relative path for getLocation
|
|
||||||
repositorySystemSession.setLocalRepositoryManager(
|
|
||||||
new SimpleLocalRepositoryManager( new File( repository.getLocation() ) ) );
|
|
||||||
|
|
||||||
DefaultProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest();
|
|
||||||
|
|
||||||
project.setProjectBuildingRequest( projectBuildingRequest );
|
|
||||||
|
|
||||||
projectBuildingRequest.setRepositorySession( repositorySystemSession );
|
|
||||||
|
|
||||||
DefaultDependencyResolutionRequest request =
|
|
||||||
new DefaultDependencyResolutionRequest( project, projectBuildingRequest.getRepositorySession() );
|
|
||||||
|
|
||||||
//DependencyFilter dependencyFilter
|
|
||||||
//request.setResolutionFilter( )
|
|
||||||
|
|
||||||
//DependencyResolutionResult result = projectDependenciesResolver.resolve( request );
|
|
||||||
|
|
||||||
//DependencyNode dependencyNode = buildDependencyNode( null, result.getDependencyGraph(), projectArtifact, null );
|
|
||||||
/*DependencyNode dependencyNode = dependencyGraphBuilder.buildDependencyGraph( project, new ArtifactFilter()
|
|
||||||
{
|
|
||||||
public boolean include( Artifact artifact )
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} );*/
|
|
||||||
|
|
||||||
DependencyResolutionResult resolutionResult = resolve( request );
|
|
||||||
|
|
||||||
log.debug( "dependency graph build" );
|
|
||||||
|
|
||||||
// FIXME take care of relative path
|
// FIXME take care of relative path
|
||||||
test( repository.getLocation(), groupId, artifactId, version, dependencyVisitor );
|
resolve( repository.getLocation(), groupId, artifactId, version, dependencyVisitor );
|
||||||
|
|
||||||
return resolutionResult;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private DependencyResolutionResult resolve( DefaultDependencyResolutionRequest request )
|
|
||||||
throws DependencyResolutionException
|
|
||||||
{
|
|
||||||
|
|
||||||
RequestTrace trace = DefaultRequestTrace.newChild( null, request );
|
private void resolve( String localRepoDir, String groupId, String artifactId, String version,
|
||||||
|
DependencyVisitor dependencyVisitor )
|
||||||
DefaultDependencyResolutionResult result = new DefaultDependencyResolutionResult();
|
|
||||||
|
|
||||||
MavenProject project = request.getMavenProject();
|
|
||||||
RepositorySystemSession session = request.getRepositorySession();
|
|
||||||
DependencyFilter filter = request.getResolutionFilter();
|
|
||||||
|
|
||||||
ArtifactTypeRegistry stereotypes = session.getArtifactTypeRegistry();
|
|
||||||
|
|
||||||
CollectRequest collect = new CollectRequest();
|
|
||||||
collect.setRequestContext( "project" );
|
|
||||||
collect.setRepositories( project.getRemoteProjectRepositories() );
|
|
||||||
|
|
||||||
if ( project.getDependencyArtifacts() == null )
|
|
||||||
{
|
|
||||||
for ( org.apache.maven.model.Dependency dependency : project.getDependencies() )
|
|
||||||
{
|
|
||||||
if ( StringUtils.isEmpty( dependency.getGroupId() ) || StringUtils.isEmpty( dependency.getArtifactId() )
|
|
||||||
|| StringUtils.isEmpty( dependency.getVersion() ) )
|
|
||||||
{
|
|
||||||
// guard against case where best-effort resolution for invalid models is requested
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
collect.addDependency( RepositoryUtils.toDependency( dependency, stereotypes ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Map<String, org.apache.maven.model.Dependency> dependencies =
|
|
||||||
new HashMap<String, org.apache.maven.model.Dependency>();
|
|
||||||
for ( org.apache.maven.model.Dependency dependency : project.getDependencies() )
|
|
||||||
{
|
|
||||||
String classifier = dependency.getClassifier();
|
|
||||||
if ( classifier == null )
|
|
||||||
{
|
|
||||||
ArtifactType type = stereotypes.get( dependency.getType() );
|
|
||||||
if ( type != null )
|
|
||||||
{
|
|
||||||
classifier = type.getClassifier();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String key = ArtifacIdUtils.toVersionlessId( dependency.getGroupId(), dependency.getArtifactId(),
|
|
||||||
dependency.getType(), classifier );
|
|
||||||
dependencies.put( key, dependency );
|
|
||||||
}
|
|
||||||
for ( Artifact artifact : project.getDependencyArtifacts() )
|
|
||||||
{
|
|
||||||
String key = artifact.getDependencyConflictId();
|
|
||||||
org.apache.maven.model.Dependency dependency = dependencies.get( key );
|
|
||||||
Collection<Exclusion> exclusions = dependency != null ? dependency.getExclusions() : null;
|
|
||||||
org.sonatype.aether.graph.Dependency dep = RepositoryUtils.toDependency( artifact, exclusions );
|
|
||||||
if ( !JavaScopes.SYSTEM.equals( dep.getScope() ) && dep.getArtifact().getFile() != null )
|
|
||||||
{
|
|
||||||
// enable re-resolution
|
|
||||||
org.sonatype.aether.artifact.Artifact art = dep.getArtifact();
|
|
||||||
art = art.setFile( null ).setVersion( art.getBaseVersion() );
|
|
||||||
dep = dep.setArtifact( art );
|
|
||||||
}
|
|
||||||
collect.addDependency( dep );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DependencyManagement depMngt = project.getDependencyManagement();
|
|
||||||
if ( depMngt != null )
|
|
||||||
{
|
|
||||||
for ( org.apache.maven.model.Dependency dependency : depMngt.getDependencies() )
|
|
||||||
{
|
|
||||||
collect.addManagedDependency( RepositoryUtils.toDependency( dependency, stereotypes ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
collect.setRoot( new org.sonatype.aether.graph.Dependency(
|
|
||||||
new org.sonatype.aether.util.artifact.DefaultArtifact( project.getGroupId(), project.getArtifactId(), null,
|
|
||||||
project.getVersion() ), "compile" ) );
|
|
||||||
|
|
||||||
DependencyRequest depRequest = new DependencyRequest( collect, filter );
|
|
||||||
depRequest.setTrace( trace );
|
|
||||||
|
|
||||||
org.sonatype.aether.graph.DependencyNode node;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
collect.setTrace( DefaultRequestTrace.newChild( trace, depRequest ) );
|
|
||||||
node = repoSystem.collectDependencies( session, collect ).getRoot();
|
|
||||||
result.setDependencyGraph( node );
|
|
||||||
}
|
|
||||||
catch ( DependencyCollectionException e )
|
|
||||||
{
|
|
||||||
result.setDependencyGraph( e.getResult().getRoot() );
|
|
||||||
result.setCollectionErrors( e.getResult().getExceptions() );
|
|
||||||
|
|
||||||
throw new DependencyResolutionException( result,
|
|
||||||
"Could not resolve dependencies for project " + project.getId()
|
|
||||||
+ ": " + e.getMessage(), e );
|
|
||||||
}
|
|
||||||
|
|
||||||
depRequest.setRoot( node );
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void test( String localRepoDir, String groupId, String artifactId, String version,
|
|
||||||
DependencyVisitor dependencyVisitor )
|
|
||||||
{
|
{
|
||||||
|
|
||||||
RepositorySystem system = newRepositorySystem();
|
RepositorySystem system = newRepositorySystem();
|
||||||
|
@ -449,56 +275,12 @@ public class Maven3DependencyTreeBuilder
|
||||||
LocalRepository localRepo = new LocalRepository( localRepoDir );
|
LocalRepository localRepo = new LocalRepository( localRepoDir );
|
||||||
session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) );
|
session.setLocalRepositoryManager( system.newLocalRepositoryManager( localRepo ) );
|
||||||
|
|
||||||
//session.setTransferListener( new ConsoleTransferListener() );
|
//session.setTransferListener( );
|
||||||
//session.setRepositoryListener( new ConsoleRepositoryListener() );
|
//session.setRepositoryListener( n );
|
||||||
|
|
||||||
return session;
|
return session;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getVersionSelectedFromRange( VersionConstraint constraint )
|
|
||||||
{
|
|
||||||
if ( ( constraint == null ) || ( constraint.getVersion() != null ) )
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for ( org.sonatype.aether.version.VersionRange range : constraint.getRanges() )
|
|
||||||
{
|
|
||||||
if ( sb.length() > 0 )
|
|
||||||
{
|
|
||||||
sb.append( ',' );
|
|
||||||
}
|
|
||||||
sb.append( range );
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Artifact getDependencyArtifact( Dependency dep )
|
|
||||||
{
|
|
||||||
org.sonatype.aether.artifact.Artifact artifact = dep.getArtifact();
|
|
||||||
|
|
||||||
return factory.createDependencyArtifact( artifact.getGroupId(), artifact.getArtifactId(),
|
|
||||||
VersionRange.createFromVersion( artifact.getVersion() ),
|
|
||||||
artifact.getExtension(), artifact.getClassifier(), dep.getScope(),
|
|
||||||
dep.isOptional() );
|
|
||||||
}
|
|
||||||
|
|
||||||
private Model buildProject( RepositoryModelResolver modelResolver, String groupId, String artifactId,
|
|
||||||
String version )
|
|
||||||
throws ModelBuildingException, UnresolvableModelException
|
|
||||||
{
|
|
||||||
DefaultModelBuildingRequest req = new DefaultModelBuildingRequest();
|
|
||||||
req.setProcessPlugins( false );
|
|
||||||
req.setModelSource( modelResolver.resolveModel( groupId, artifactId, version ) );
|
|
||||||
req.setModelResolver( modelResolver );
|
|
||||||
req.setValidationLevel( ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL );
|
|
||||||
//MRM-1607. olamy this will resolve jdk profiles on the current running archiva jvm
|
|
||||||
req.setSystemProperties( System.getProperties() );
|
|
||||||
|
|
||||||
return builder.build( req ).getEffectiveModel();
|
|
||||||
}
|
|
||||||
|
|
||||||
private ManagedRepository findArtifactInRepositories( List<String> repositoryIds, Artifact projectArtifact )
|
private ManagedRepository findArtifactInRepositories( List<String> repositoryIds, Artifact projectArtifact )
|
||||||
throws RepositoryAdminException
|
throws RepositoryAdminException
|
||||||
|
@ -521,82 +303,5 @@ public class Maven3DependencyTreeBuilder
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class DefaultDependencyResolutionResult
|
|
||||||
implements DependencyResolutionResult
|
|
||||||
{
|
|
||||||
|
|
||||||
private org.sonatype.aether.graph.DependencyNode root;
|
|
||||||
|
|
||||||
private List<Dependency> dependencies = new ArrayList<Dependency>();
|
|
||||||
|
|
||||||
private List<Dependency> resolvedDependencies = new ArrayList<Dependency>();
|
|
||||||
|
|
||||||
private List<Dependency> unresolvedDependencies = new ArrayList<Dependency>();
|
|
||||||
|
|
||||||
private List<Exception> collectionErrors = new ArrayList<Exception>();
|
|
||||||
|
|
||||||
private Map<Dependency, List<Exception>> resolutionErrors = new IdentityHashMap<Dependency, List<Exception>>();
|
|
||||||
|
|
||||||
public org.sonatype.aether.graph.DependencyNode getDependencyGraph()
|
|
||||||
{
|
|
||||||
return root;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDependencyGraph( org.sonatype.aether.graph.DependencyNode root )
|
|
||||||
{
|
|
||||||
this.root = root;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Dependency> getDependencies()
|
|
||||||
{
|
|
||||||
return dependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Dependency> getResolvedDependencies()
|
|
||||||
{
|
|
||||||
return resolvedDependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addResolvedDependency( Dependency dependency )
|
|
||||||
{
|
|
||||||
dependencies.add( dependency );
|
|
||||||
resolvedDependencies.add( dependency );
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Dependency> getUnresolvedDependencies()
|
|
||||||
{
|
|
||||||
return unresolvedDependencies;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Exception> getCollectionErrors()
|
|
||||||
{
|
|
||||||
return collectionErrors;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCollectionErrors( List<Exception> exceptions )
|
|
||||||
{
|
|
||||||
if ( exceptions != null )
|
|
||||||
{
|
|
||||||
this.collectionErrors = exceptions;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.collectionErrors = new ArrayList<Exception>();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Exception> getResolutionErrors( Dependency dependency )
|
|
||||||
{
|
|
||||||
List<Exception> errors = resolutionErrors.get( dependency );
|
|
||||||
return ( errors != null ) ? errors : Collections.<Exception>emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setResolutionErrors( Dependency dependency, List<Exception> errors )
|
|
||||||
{
|
|
||||||
dependencies.add( dependency );
|
|
||||||
unresolvedDependencies.add( dependency );
|
|
||||||
resolutionErrors.put( dependency, errors );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import org.apache.archiva.configuration.ArchivaConfiguration;
|
||||||
import org.apache.archiva.configuration.Configuration;
|
import org.apache.archiva.configuration.Configuration;
|
||||||
import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
|
import org.apache.archiva.configuration.ManagedRepositoryConfiguration;
|
||||||
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
|
import org.apache.archiva.test.utils.ArchivaSpringJUnit4ClassRunner;
|
||||||
import org.apache.maven.project.DependencyResolutionResult;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
|
@ -74,6 +73,8 @@ public class DependencyTreeBuilderTestMaven3
|
||||||
private DefaultRepositorySystem defaultRepositorySystem;
|
private DefaultRepositorySystem defaultRepositorySystem;
|
||||||
|
|
||||||
|
|
||||||
|
final Map<String, DependencyNode> nodes = new HashMap<String, DependencyNode>();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named( value = "archivaConfiguration#test" )
|
@Named( value = "archivaConfiguration#test" )
|
||||||
ArchivaConfiguration config;
|
ArchivaConfiguration config;
|
||||||
|
@ -86,8 +87,6 @@ public class DependencyTreeBuilderTestMaven3
|
||||||
|
|
||||||
defaultRepositorySystem = (DefaultRepositorySystem) plexusSisuBridge.lookup( RepositorySystem.class );
|
defaultRepositorySystem = (DefaultRepositorySystem) plexusSisuBridge.lookup( RepositorySystem.class );
|
||||||
|
|
||||||
final Map<String, DependencyNode> nodes = new HashMap<String, DependencyNode>();
|
|
||||||
|
|
||||||
DefaultDependencyNode springContext = new DefaultDependencyNode(
|
DefaultDependencyNode springContext = new DefaultDependencyNode(
|
||||||
new Dependency( createArtifact( "org.springframework", "spring-context", "2.5.6" ), "compile" ) );
|
new Dependency( createArtifact( "org.springframework", "spring-context", "2.5.6" ), "compile" ) );
|
||||||
|
|
||||||
|
@ -300,23 +299,20 @@ public class DependencyTreeBuilderTestMaven3
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
DependencyResolutionResult resolutionResult =
|
builder.buildDependencyTree( Collections.singletonList( TEST_REPO_ID ), TEST_GROUP_ID, TEST_ARTIFACT_ID,
|
||||||
builder.buildDependencyTree( Collections.singletonList( TEST_REPO_ID ), TEST_GROUP_ID, TEST_ARTIFACT_ID,
|
TEST_VERSION, new DependencyVisitor()
|
||||||
TEST_VERSION, new DependencyVisitor()
|
{
|
||||||
|
public boolean visitEnter( DependencyNode dependencyNode )
|
||||||
{
|
{
|
||||||
public boolean visitEnter( DependencyNode dependencyNode )
|
return true;
|
||||||
{
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean visitLeave( DependencyNode dependencyNode )
|
public boolean visitLeave( DependencyNode dependencyNode )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
assertNotNull( resolutionResult );
|
|
||||||
assertEquals( 10, resolutionResult.getDependencies().size() );
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue