RepositoryChain repositoryChain = ivyFactory.create(configuration, repositories, metadataHandler.getComponentMetadataProcessor());
ComponentMetaDataResolver metaDataResolver = new ClientModuleResolver(repositoryChain.getComponentMetaDataResolver(), dependencyDescriptorFactory);
ProjectDependencyResolver projectDependencyResolver = new ProjectDependencyResolver(projectComponentRegistry, localComponentFactory, repositoryChain.getComponentIdResolver());
ResolutionStrategyInternal resolutionStrategy = configuration.getResolutionStrategy();
DependencyToComponentIdResolver idResolver = new VersionForcingDependencyToModuleResolver(projectDependencyResolver, resolutionStrategy.getDependencyResolveRule());
ArtifactResolver artifactResolver = createArtifactResolver(repositoryChain);
ModuleConflictResolver conflictResolver;
if (resolutionStrategy.getConflictResolution() instanceof StrictConflictResolution) {
conflictResolver = new StrictConflictResolver();
} else {
conflictResolver = new LatestModuleConflictResolver(versionComparator);
}
conflictResolver = new VersionSelectionReasonResolver(conflictResolver);