Search in sources :

Example 1 with ResolutionAwareRepository

use of org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository in project gradle by gradle.

the class ResolveIvyFactory method create.

public ComponentResolvers create(ResolutionStrategyInternal resolutionStrategy, Collection<? extends ResolutionAwareRepository> repositories, ComponentMetadataProcessor metadataProcessor) {
    if (repositories.isEmpty()) {
        return new NoRepositoriesResolver();
    }
    ResolutionRules resolutionRules = resolutionStrategy.getResolutionRules();
    CachePolicy cachePolicy = resolutionStrategy.getCachePolicy();
    startParameterResolutionOverride.addResolutionRules(resolutionRules);
    UserResolverChain moduleResolver = new UserResolverChain(versionSelectorScheme, versionComparator, resolutionStrategy.getComponentSelection(), moduleIdentifierFactory);
    ParentModuleLookupResolver parentModuleResolver = new ParentModuleLookupResolver(versionSelectorScheme, versionComparator, moduleIdentifierFactory);
    for (ResolutionAwareRepository repository : repositories) {
        ConfiguredModuleComponentRepository baseRepository = repository.createResolver();
        if (baseRepository instanceof ExternalResourceResolver) {
            ((ExternalResourceResolver) baseRepository).setComponentResolvers(parentModuleResolver);
        }
        ModuleComponentRepository moduleComponentRepository = baseRepository;
        if (baseRepository.isLocal()) {
            moduleComponentRepository = new CachingModuleComponentRepository(moduleComponentRepository, cacheProvider.getInMemoryCaches(), cachePolicy, timeProvider, metadataProcessor, moduleIdentifierFactory);
            moduleComponentRepository = new LocalModuleComponentRepository(moduleComponentRepository, metadataProcessor);
        } else {
            moduleComponentRepository = startParameterResolutionOverride.overrideModuleVersionRepository(moduleComponentRepository);
            moduleComponentRepository = new CachingModuleComponentRepository(moduleComponentRepository, cacheProvider.getCaches(), cachePolicy, timeProvider, metadataProcessor, moduleIdentifierFactory);
        }
        moduleComponentRepository = cacheProvider.getResolvedArtifactCaches().provideResolvedArtifactCache(moduleComponentRepository);
        if (baseRepository.isDynamicResolveMode()) {
            moduleComponentRepository = new IvyDynamicResolveModuleComponentRepository(moduleComponentRepository);
        }
        moduleComponentRepository = new ErrorHandlingModuleComponentRepository(moduleComponentRepository, repositoryBlacklister);
        moduleResolver.add(moduleComponentRepository);
        parentModuleResolver.add(moduleComponentRepository);
    }
    return moduleResolver;
}
Also used : ResolutionAwareRepository(org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository) ResolutionRules(org.gradle.api.artifacts.cache.ResolutionRules) CachePolicy(org.gradle.api.internal.artifacts.configurations.dynamicversion.CachePolicy) ExternalResourceResolver(org.gradle.api.internal.artifacts.repositories.resolver.ExternalResourceResolver)

Example 2 with ResolutionAwareRepository

use of org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository in project gradle by gradle.

the class JvmTestSuiteBasePlugin method configureRuntimeClasspath.

@Finalize
public void configureRuntimeClasspath(@Each JvmTestSuiteBinarySpecInternal testBinary, ServiceRegistry serviceRegistry, ModelSchemaStore modelSchemaStore) {
    ArtifactDependencyResolver dependencyResolver = serviceRegistry.get(ArtifactDependencyResolver.class);
    RepositoryHandler repositories = serviceRegistry.get(RepositoryHandler.class);
    List<ResolutionAwareRepository> resolutionAwareRepositories = CollectionUtils.collect(repositories, Transformers.cast(ResolutionAwareRepository.class));
    ModelSchema<? extends JvmTestSuiteBinarySpec> schema = Cast.uncheckedCast(modelSchemaStore.getSchema(((BinarySpecInternal) testBinary).getPublicType()));
    AttributesSchemaInternal attributesSchema = serviceRegistry.get(AttributesSchemaInternal.class);
    ImmutableModuleIdentifierFactory moduleIdentifierFactory = serviceRegistry.get(ImmutableModuleIdentifierFactory.class);
    BuildOperationExecutor buildOperationExecutor = serviceRegistry.get(BuildOperationExecutor.class);
    BuildIdentity buildIdentity = serviceRegistry.get(BuildIdentity.class);
    testBinary.setRuntimeClasspath(configureRuntimeClasspath(testBinary, dependencyResolver, resolutionAwareRepositories, schema, attributesSchema, moduleIdentifierFactory, buildOperationExecutor, buildIdentity));
}
Also used : ArtifactDependencyResolver(org.gradle.api.internal.artifacts.ArtifactDependencyResolver) ImmutableModuleIdentifierFactory(org.gradle.api.internal.artifacts.ImmutableModuleIdentifierFactory) BuildIdentity(org.gradle.initialization.BuildIdentity) BinarySpecInternal(org.gradle.platform.base.internal.BinarySpecInternal) JvmBinarySpecInternal(org.gradle.jvm.internal.JvmBinarySpecInternal) JvmTestSuiteBinarySpecInternal(org.gradle.jvm.test.internal.JvmTestSuiteBinarySpecInternal) ResolutionAwareRepository(org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository) RepositoryHandler(org.gradle.api.artifacts.dsl.RepositoryHandler) AttributesSchemaInternal(org.gradle.api.internal.attributes.AttributesSchemaInternal) BuildOperationExecutor(org.gradle.internal.operations.BuildOperationExecutor) Finalize(org.gradle.model.Finalize)

Example 3 with ResolutionAwareRepository

use of org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository in project gradle by gradle.

the class DefaultConfigurationResolver method resolveGraph.

@Override
public void resolveGraph(ConfigurationInternal configuration, ResolverResults results) {
    List<ResolutionAwareRepository> resolutionAwareRepositories = getRepositories();
    StoreSet stores = storeFactory.createStoreSet();
    BinaryStore oldModelStore = stores.nextBinaryStore();
    Store<TransientConfigurationResults> oldModelCache = stores.oldModelCache();
    TransientConfigurationResultsBuilder oldTransientModelBuilder = new TransientConfigurationResultsBuilder(oldModelStore, oldModelCache, moduleIdentifierFactory, buildOperationExecutor);
    DefaultResolvedConfigurationBuilder oldModelBuilder = new DefaultResolvedConfigurationBuilder(oldTransientModelBuilder);
    ResolvedConfigurationDependencyGraphVisitor oldModelVisitor = new ResolvedConfigurationDependencyGraphVisitor(oldModelBuilder);
    BinaryStore newModelStore = stores.nextBinaryStore();
    Store<ResolvedComponentResult> newModelCache = stores.newModelCache();
    StreamingResolutionResultBuilder newModelBuilder = new StreamingResolutionResultBuilder(newModelStore, newModelCache, moduleIdentifierFactory, attributeContainerSerializer, attributeDesugaring, componentSelectionDescriptorFactory);
    ResolvedLocalComponentsResultGraphVisitor localComponentsVisitor = new ResolvedLocalComponentsResultGraphVisitor(currentBuild);
    ResolutionStrategyInternal resolutionStrategy = configuration.getResolutionStrategy();
    DefaultResolvedArtifactsBuilder artifactsBuilder = new DefaultResolvedArtifactsBuilder(buildProjectDependencies, resolutionStrategy.getSortOrder());
    FileDependencyCollectingGraphVisitor fileDependencyVisitor = new FileDependencyCollectingGraphVisitor();
    ResolutionFailureCollector failureCollector = new ResolutionFailureCollector(componentSelectorConverter);
    DependencyGraphVisitor graphVisitor = new CompositeDependencyGraphVisitor(newModelBuilder, localComponentsVisitor, failureCollector);
    ImmutableList.Builder<DependencyArtifactsVisitor> visitors = new ImmutableList.Builder<>();
    visitors.add(oldModelVisitor);
    visitors.add(fileDependencyVisitor);
    visitors.add(artifactsBuilder);
    if (resolutionStrategy.getConflictResolution() == ConflictResolution.strict) {
        ProjectComponentIdentifier projectId = configuration.getModule().getProjectId();
        // projectId is null for DefaultModule used in settings
        String projectPath = projectId != null ? projectId.getProjectPath() : "";
        visitors.add(new FailOnVersionConflictArtifactsVisitor(projectPath, configuration.getName()));
    }
    DependencyLockingArtifactVisitor lockingVisitor = null;
    if (resolutionStrategy.isDependencyLockingEnabled()) {
        lockingVisitor = new DependencyLockingArtifactVisitor(configuration.getName(), resolutionStrategy.getDependencyLockingProvider());
        visitors.add(lockingVisitor);
    } else {
        resolutionStrategy.confirmUnlockedConfigurationResolved(configuration.getName());
    }
    ImmutableList<DependencyArtifactsVisitor> allVisitors = visitors.build();
    CompositeDependencyArtifactsVisitor artifactsVisitor = new CompositeDependencyArtifactsVisitor(allVisitors);
    resolver.resolve(configuration, resolutionAwareRepositories, metadataHandler, Specs.satisfyAll(), graphVisitor, artifactsVisitor, attributesSchema, artifactTypeRegistry, true);
    VisitedArtifactsResults artifactsResults = artifactsBuilder.complete();
    VisitedFileDependencyResults fileDependencyResults = fileDependencyVisitor.complete();
    ResolvedGraphResults graphResults = oldModelBuilder.complete();
    // Append to failures for locking and fail on version conflict
    Set<UnresolvedDependency> extraFailures = lockingVisitor == null ? Collections.emptySet() : lockingVisitor.collectLockingFailures();
    Set<UnresolvedDependency> failures = failureCollector.complete(extraFailures);
    results.graphResolved(newModelBuilder.complete(extraFailures), localComponentsVisitor, new BuildDependenciesOnlyVisitedArtifactSet(failures, artifactsResults, artifactTransforms, configuration.getDependenciesResolver()));
    results.retainState(new ArtifactResolveState(graphResults, artifactsResults, fileDependencyResults, failures, oldTransientModelBuilder));
    if (!results.hasError() && failures.isEmpty()) {
        artifactsVisitor.complete();
    }
}
Also used : TransientConfigurationResultsBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResultsBuilder) ResolvedConfigurationDependencyGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.ResolvedConfigurationDependencyGraphVisitor) ResolutionAwareRepository(org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository) StreamingResolutionResultBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.StreamingResolutionResultBuilder) ImmutableList(com.google.common.collect.ImmutableList) DefaultResolvedArtifactsBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultResolvedArtifactsBuilder) StreamingResolutionResultBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.StreamingResolutionResultBuilder) TransientConfigurationResultsBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResultsBuilder) DefaultResolvedConfigurationBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.DefaultResolvedConfigurationBuilder) CompositeDependencyGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.CompositeDependencyGraphVisitor) CompositeDependencyArtifactsVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.CompositeDependencyArtifactsVisitor) DefaultResolvedArtifactsBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultResolvedArtifactsBuilder) DependencyGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.DependencyGraphVisitor) CompositeDependencyGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.CompositeDependencyGraphVisitor) ResolvedConfigurationDependencyGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.ResolvedConfigurationDependencyGraphVisitor) CompositeDependencyArtifactsVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.CompositeDependencyArtifactsVisitor) DependencyArtifactsVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DependencyArtifactsVisitor) StoreSet(org.gradle.api.internal.artifacts.ivyservice.resolveengine.store.StoreSet) FileDependencyCollectingGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.FileDependencyCollectingGraphVisitor) BinaryStore(org.gradle.cache.internal.BinaryStore) VisitedFileDependencyResults(org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.VisitedFileDependencyResults) ResolvedGraphResults(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.ResolvedGraphResults) FailOnVersionConflictArtifactsVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.conflicts.FailOnVersionConflictArtifactsVisitor) ResolvedLocalComponentsResultGraphVisitor(org.gradle.api.internal.artifacts.ivyservice.resolveengine.projectresult.ResolvedLocalComponentsResultGraphVisitor) ProjectComponentIdentifier(org.gradle.api.artifacts.component.ProjectComponentIdentifier) UnresolvedDependency(org.gradle.api.artifacts.UnresolvedDependency) VisitedArtifactsResults(org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.VisitedArtifactsResults) DefaultResolvedConfigurationBuilder(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.DefaultResolvedConfigurationBuilder) ResolutionFailureCollector(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.ResolutionFailureCollector) BuildDependenciesOnlyVisitedArtifactSet(org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.BuildDependenciesOnlyVisitedArtifactSet) TransientConfigurationResults(org.gradle.api.internal.artifacts.ivyservice.resolveengine.oldresult.TransientConfigurationResults) DependencyLockingArtifactVisitor(org.gradle.internal.locking.DependencyLockingArtifactVisitor) ResolvedComponentResult(org.gradle.api.artifacts.result.ResolvedComponentResult) ResolutionStrategyInternal(org.gradle.api.internal.artifacts.configurations.ResolutionStrategyInternal) DependencyVerificationOverride(org.gradle.api.internal.artifacts.ivyservice.ivyresolve.verification.DependencyVerificationOverride)

Example 4 with ResolutionAwareRepository

use of org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository in project gradle by gradle.

the class ResolveIvyFactory method create.

public ComponentResolvers create(String resolveContextName, ResolutionStrategyInternal resolutionStrategy, Collection<? extends ResolutionAwareRepository> repositories, ComponentMetadataProcessorFactory metadataProcessor, AttributeContainer consumerAttributes, AttributesSchema attributesSchema, ImmutableAttributesFactory attributesFactory, ComponentMetadataSupplierRuleExecutor componentMetadataSupplierRuleExecutor) {
    if (repositories.isEmpty()) {
        return new NoRepositoriesResolver();
    }
    CachePolicy cachePolicy = resolutionStrategy.getCachePolicy();
    startParameterResolutionOverride.applyToCachePolicy(cachePolicy);
    UserResolverChain moduleResolver = new UserResolverChain(versionComparator, resolutionStrategy.getComponentSelection(), versionParser, consumerAttributes, attributesSchema, attributesFactory, metadataProcessor, componentMetadataSupplierRuleExecutor, cachePolicy, calculatedValueContainerFactory);
    ParentModuleLookupResolver parentModuleResolver = new ParentModuleLookupResolver(versionComparator, moduleIdentifierFactory, versionParser, consumerAttributes, attributesSchema, attributesFactory, metadataProcessor, componentMetadataSupplierRuleExecutor, cachePolicy, calculatedValueContainerFactory);
    for (ResolutionAwareRepository repository : repositories) {
        ConfiguredModuleComponentRepository baseRepository = repository.createResolver();
        baseRepository.setComponentResolvers(parentModuleResolver);
        Instantiator instantiator = baseRepository.getComponentMetadataInstantiator();
        MetadataResolutionContext metadataResolutionContext = new DefaultMetadataResolutionContext(cachePolicy, instantiator);
        ComponentMetadataProcessor componentMetadataProcessor = metadataProcessor.createComponentMetadataProcessor(metadataResolutionContext);
        ModuleComponentRepository moduleComponentRepository = baseRepository;
        if (baseRepository.isLocal()) {
            moduleComponentRepository = new CachingModuleComponentRepository(moduleComponentRepository, cacheProvider.getInMemoryOnlyCaches(), cachePolicy, timeProvider, componentMetadataProcessor, ChangingValueDependencyResolutionListener.NO_OP);
            moduleComponentRepository = new LocalModuleComponentRepository(moduleComponentRepository);
        } else {
            moduleComponentRepository = startParameterResolutionOverride.overrideModuleVersionRepository(moduleComponentRepository);
            moduleComponentRepository = new CachingModuleComponentRepository(moduleComponentRepository, cacheProvider.getPersistentCaches(), cachePolicy, timeProvider, componentMetadataProcessor, listener);
        }
        moduleComponentRepository = cacheProvider.getResolvedArtifactCaches().provideResolvedArtifactCache(moduleComponentRepository, resolutionStrategy.isDependencyVerificationEnabled());
        if (baseRepository.isDynamicResolveMode()) {
            moduleComponentRepository = new IvyDynamicResolveModuleComponentRepository(moduleComponentRepository);
        }
        moduleComponentRepository = new ErrorHandlingModuleComponentRepository(moduleComponentRepository, repositoryBlacklister);
        moduleComponentRepository = filterRepository(repository, moduleComponentRepository, resolveContextName, consumerAttributes);
        moduleComponentRepository = dependencyVerificationOverride.overrideDependencyVerification(moduleComponentRepository, resolveContextName, resolutionStrategy);
        moduleResolver.add(moduleComponentRepository);
        parentModuleResolver.add(moduleComponentRepository);
    }
    return moduleResolver;
}
Also used : ResolutionAwareRepository(org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository) MetadataResolutionContext(org.gradle.api.internal.artifacts.MetadataResolutionContext) Instantiator(org.gradle.internal.reflect.Instantiator) ComponentMetadataProcessor(org.gradle.api.internal.artifacts.ComponentMetadataProcessor) CachePolicy(org.gradle.api.internal.artifacts.configurations.dynamicversion.CachePolicy)

Aggregations

ResolutionAwareRepository (org.gradle.api.internal.artifacts.repositories.ResolutionAwareRepository)4 CachePolicy (org.gradle.api.internal.artifacts.configurations.dynamicversion.CachePolicy)2 ImmutableList (com.google.common.collect.ImmutableList)1 UnresolvedDependency (org.gradle.api.artifacts.UnresolvedDependency)1 ResolutionRules (org.gradle.api.artifacts.cache.ResolutionRules)1 ProjectComponentIdentifier (org.gradle.api.artifacts.component.ProjectComponentIdentifier)1 RepositoryHandler (org.gradle.api.artifacts.dsl.RepositoryHandler)1 ResolvedComponentResult (org.gradle.api.artifacts.result.ResolvedComponentResult)1 ArtifactDependencyResolver (org.gradle.api.internal.artifacts.ArtifactDependencyResolver)1 ComponentMetadataProcessor (org.gradle.api.internal.artifacts.ComponentMetadataProcessor)1 ImmutableModuleIdentifierFactory (org.gradle.api.internal.artifacts.ImmutableModuleIdentifierFactory)1 MetadataResolutionContext (org.gradle.api.internal.artifacts.MetadataResolutionContext)1 ResolutionStrategyInternal (org.gradle.api.internal.artifacts.configurations.ResolutionStrategyInternal)1 DependencyVerificationOverride (org.gradle.api.internal.artifacts.ivyservice.ivyresolve.verification.DependencyVerificationOverride)1 BuildDependenciesOnlyVisitedArtifactSet (org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.BuildDependenciesOnlyVisitedArtifactSet)1 DefaultResolvedArtifactsBuilder (org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DefaultResolvedArtifactsBuilder)1 DependencyArtifactsVisitor (org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.DependencyArtifactsVisitor)1 VisitedArtifactsResults (org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.VisitedArtifactsResults)1 VisitedFileDependencyResults (org.gradle.api.internal.artifacts.ivyservice.resolveengine.artifact.VisitedFileDependencyResults)1 CompositeDependencyArtifactsVisitor (org.gradle.api.internal.artifacts.ivyservice.resolveengine.graph.CompositeDependencyArtifactsVisitor)1