use of org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal in project gradle by gradle.
the class DefaultDependencyResolveDetails method complete.
public void complete() {
if (!dirty) {
return;
}
ComponentSelectionDescriptorInternal selectionReason = selectionReason();
if (useSelector != null) {
delegate.useTarget(useSelector, selectionReason);
} else if (useVersion != null) {
if (delegate.getTarget() instanceof ModuleComponentSelector) {
ModuleComponentSelector target = (ModuleComponentSelector) delegate.getTarget();
if (!useVersion.equals(target.getVersionConstraint())) {
delegate.useTarget(DefaultModuleComponentSelector.newSelector(target.getModuleIdentifier(), useVersion, target.getAttributes(), target.getRequestedCapabilities()), selectionReason);
} else {
// Still 'updated' with reason when version remains the same.
delegate.useTarget(delegate.getTarget(), selectionReason);
}
} else {
// If the current target is a project component, it must be unmodified from the requested
ModuleComponentSelector newTarget = DefaultModuleComponentSelector.newSelector(DefaultModuleIdentifier.newId(requested.getGroup(), requested.getName()), useVersion);
delegate.useTarget(newTarget, selectionReason);
}
}
delegate.artifactSelection(artifactSelectionAction);
dirty = false;
}
use of org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal in project gradle by gradle.
the class ComponentState method getSelectionReason.
@Override
public ComponentSelectionReason getSelectionReason() {
if (root) {
return ComponentSelectionReasons.root();
}
if (cachedReason != null) {
return cachedReason;
}
ComponentSelectionReasonInternal reason = ComponentSelectionReasons.empty();
for (final SelectorState selectorState : module.getSelectors()) {
if (selectorState.getFailure() == null) {
selectorState.addReasonsForSelector(reason);
}
}
for (ComponentSelectionDescriptorInternal selectionCause : VersionConflictResolutionDetails.mergeCauses(selectionCauses)) {
reason.addCause(selectionCause);
}
cachedReason = reason;
return reason;
}
use of org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal in project gradle by gradle.
the class SelectorState method select.
public void select(ComponentState selected) {
selected.selectedBy(this);
ComponentSelectionDescriptorInternal selectionDescriptor = selectionDescriptionForDependency(dependencyMetadata);
selected.addCause(selectionDescriptor);
if (dependencyState.getRuleDescriptor() != null) {
selected.addCause(dependencyState.getRuleDescriptor());
}
// We should never select a component for a different module, but the JVM software model dependency resolution is doing this.
// TODO Ditch the JVM Software Model plugins and re-add this assertion
// assert selected.getModule() == targetModule;
this.selected = selected;
}
use of org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal 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);
}
};
}
use of org.gradle.api.internal.artifacts.ivyservice.resolveengine.result.ComponentSelectionDescriptorInternal in project gradle by gradle.
the class DependencyState method addMainReason.
private void addMainReason(List<ComponentSelectionDescriptorInternal> reasons) {
ComponentSelectionDescriptorInternal dependencyDescriptor;
if (reasons.contains(BY_ANCESTOR)) {
dependencyDescriptor = BY_ANCESTOR;
} else {
dependencyDescriptor = dependency.isConstraint() ? CONSTRAINT : REQUESTED;
}
String reason = dependency.getReason();
if (reason != null) {
dependencyDescriptor = dependencyDescriptor.withDescription(Describables.of(reason));
}
maybeAddReason(reasons, dependencyDescriptor);
}
Aggregations