use of org.gradle.api.artifacts.component.ProjectComponentSelector 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.artifacts.component.ProjectComponentSelector in project gradle by gradle.
the class ProjectDependencyResolver method resolve.
@Override
public void resolve(DependencyMetadata dependency, VersionSelector acceptor, @Nullable VersionSelector rejector, BuildableComponentIdResolveResult result) {
if (dependency.getSelector() instanceof ProjectComponentSelector) {
ProjectComponentSelector selector = (ProjectComponentSelector) dependency.getSelector();
ProjectComponentIdentifier projectId = componentIdentifierFactory.createProjectComponentIdentifier(selector);
LocalComponentMetadata componentMetaData = localComponentRegistry.getComponent(projectId);
if (componentMetaData == null) {
result.failed(new ModuleVersionResolveException(selector, () -> projectId + " not found."));
} else {
if (rejector != null && rejector.accept(componentMetaData.getModuleVersionId().getVersion())) {
result.rejected(projectId, componentMetaData.getModuleVersionId());
} else {
result.resolved(componentMetaData);
}
}
}
}
use of org.gradle.api.artifacts.component.ProjectComponentSelector in project gradle by gradle.
the class DependencyResultSpec method matchesRequested.
private boolean matchesRequested(DependencyResult candidate) {
ComponentSelector requested = candidate.getRequested();
if (requested instanceof ModuleComponentSelector) {
ModuleComponentSelector requestedModule = (ModuleComponentSelector) requested;
String requestedCandidate = requestedModule.getGroup() + ":" + requestedModule.getModule() + ":" + requestedModule.getVersion();
return requestedCandidate.contains(stringNotation);
}
if (requested instanceof ProjectComponentSelector) {
ProjectComponentSelector project = (ProjectComponentSelector) requested;
String requestedCandidate = project.getProjectPath();
return requestedCandidate.contains(stringNotation);
}
return false;
}
use of org.gradle.api.artifacts.component.ProjectComponentSelector in project gradle by gradle.
the class CompositeBuildDependencySubstitutions method execute.
@Override
public void execute(DependencySubstitution sub) {
DependencySubstitutionInternal dependencySubstitution = (DependencySubstitutionInternal) sub;
// Use the result of previous rules as the input for dependency substitution
ComponentSelector requested = dependencySubstitution.getTarget();
if (requested instanceof ModuleComponentSelector) {
ModuleComponentSelector selector = (ModuleComponentSelector) requested;
ProjectComponentIdentifier replacement = getReplacementFor(selector);
if (replacement != null) {
ProjectComponentSelector targetProject = DefaultProjectComponentSelector.newSelector(replacement, ((AttributeContainerInternal) requested.getAttributes()).asImmutable(), requested.getRequestedCapabilities());
dependencySubstitution.useTarget(targetProject, ComponentSelectionReasons.COMPOSITE_BUILD);
}
}
}
Aggregations