Search in sources :

Example 1 with ArtifactSelectionDetails

use of org.gradle.api.artifacts.ArtifactSelectionDetails in project gradle by gradle.

the class DefaultDependencySubstitutions method substitute.

@Override
public Substitution substitute(final ComponentSelector substituted) {
    return new Substitution() {

        Action<? super ArtifactSelectionDetails> artifactAction = Actions.doNothing();

        ComponentSelectionDescriptorInternal substitutionReason = (ComponentSelectionDescriptorInternal) reason;

        @Override
        public Substitution because(String description) {
            substitutionReason = substitutionReason.withDescription(Describables.of(description));
            return this;
        }

        @Override
        public Substitution withClassifier(String classifier) {
            artifactAction = Actions.composite(artifactAction, new SetClassifier(classifier));
            return this;
        }

        @Override
        public Substitution withoutClassifier() {
            artifactAction = Actions.composite(artifactAction, NoClassifier.INSTANCE);
            return this;
        }

        @Override
        public Substitution withoutArtifactSelectors() {
            artifactAction = Actions.composite(artifactAction, NoArtifactSelector.INSTANCE);
            return this;
        }

        @Override
        public Substitution using(ComponentSelector notation) {
            DefaultDependencySubstitution.validateTarget(notation);
            boolean projectInvolved = false;
            if (substituted instanceof ProjectComponentSelector || notation instanceof ProjectComponentSelector) {
                // A project is involved, need to be aware of it
                projectInvolved = true;
            }
            if (substituted instanceof UnversionedModuleComponentSelector) {
                final ModuleIdentifier moduleId = ((UnversionedModuleComponentSelector) substituted).getModuleIdentifier();
                if (notation instanceof ModuleComponentSelector) {
                    if (((ModuleComponentSelector) notation).getModuleIdentifier().equals(moduleId)) {
                        // This substitution is effectively a force
                        substitutionReason = substitutionReason.markAsEquivalentToForce();
                    }
                }
                addSubstitution(new ModuleMatchDependencySubstitutionAction(substitutionReason, moduleId, notation, () -> artifactAction), projectInvolved);
            } else {
                addSubstitution(new ExactMatchDependencySubstitutionAction(substitutionReason, substituted, notation, () -> artifactAction), projectInvolved);
            }
            return this;
        }

        @Override
        @Deprecated
        public void with(ComponentSelector substitute) {
            // Do not nag for 7.1 as this introduces a performance regression with Android plugin
            // Revisit when upgrading Android plugin
            /*DeprecationLogger.deprecateMethod(Substitution.class, "with(ComponentSelector)")
                    .replaceWith("using(ComponentSelector)")
                    .willBeRemovedInGradle8()
                    .withUpgradeGuideSection(7, "dependency_substitutions_with")
                    .nagUser();*/
            using(substitute);
        }
    };
}
Also used : Action(org.gradle.api.Action) ComponentSelector(org.gradle.api.artifacts.component.ComponentSelector) ModuleComponentSelector(org.gradle.api.artifacts.component.ModuleComponentSelector) DefaultModuleComponentSelector(org.gradle.internal.component.external.model.DefaultModuleComponentSelector) ProjectComponentSelector(org.gradle.api.artifacts.component.ProjectComponentSelector) DefaultProjectComponentSelector(org.gradle.internal.component.local.model.DefaultProjectComponentSelector) ArtifactSelectionDetails(org.gradle.api.artifacts.ArtifactSelectionDetails) DependencySubstitution(org.gradle.api.artifacts.DependencySubstitution) ProjectComponentSelector(org.gradle.api.artifacts.component.ProjectComponentSelector) DefaultProjectComponentSelector(org.gradle.internal.component.local.model.DefaultProjectComponentSelector) ModuleComponentSelector(org.gradle.api.artifacts.component.ModuleComponentSelector) DefaultModuleComponentSelector(org.gradle.internal.component.external.model.DefaultModuleComponentSelector) ComponentSelectionDescriptorInternal(org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal) ModuleIdentifier(org.gradle.api.artifacts.ModuleIdentifier)

Aggregations

Action (org.gradle.api.Action)1 ArtifactSelectionDetails (org.gradle.api.artifacts.ArtifactSelectionDetails)1 DependencySubstitution (org.gradle.api.artifacts.DependencySubstitution)1 ModuleIdentifier (org.gradle.api.artifacts.ModuleIdentifier)1 ComponentSelector (org.gradle.api.artifacts.component.ComponentSelector)1 ModuleComponentSelector (org.gradle.api.artifacts.component.ModuleComponentSelector)1 ProjectComponentSelector (org.gradle.api.artifacts.component.ProjectComponentSelector)1 ComponentSelectionDescriptorInternal (org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal)1 DefaultModuleComponentSelector (org.gradle.internal.component.external.model.DefaultModuleComponentSelector)1 DefaultProjectComponentSelector (org.gradle.internal.component.local.model.DefaultProjectComponentSelector)1