use of org.gradle.internal.component.model.ConfigurationMetadata in project gradle by gradle.
the class NoMatchingCapabilitiesException method buildMessage.
private static String buildMessage(ComponentResolveMetadata targetComponent, Collection<? extends Capability> requestedCapabilities, ImmutableList<? extends ConfigurationMetadata> candidates) {
StringBuilder sb = new StringBuilder("Unable to find a variant of ");
sb.append(targetComponent.getId()).append(" providing the requested ");
sb.append(CapabilitiesSupport.prettifyCapabilities(targetComponent, requestedCapabilities));
sb.append(":\n");
for (ConfigurationMetadata candidate : candidates) {
sb.append(" - Variant ").append(candidate.getName()).append(" provides ");
sb.append(CapabilitiesSupport.sortedCapabilityList(targetComponent, candidate.getCapabilities().getCapabilities())).append("\n");
}
return sb.toString();
}
use of org.gradle.internal.component.model.ConfigurationMetadata in project gradle by gradle.
the class RealisedIvyModuleResolveMetadata method transform.
public static RealisedIvyModuleResolveMetadata transform(DefaultIvyModuleResolveMetadata metadata) {
VariantMetadataRules variantMetadataRules = metadata.getVariantMetadataRules();
ImmutableList<ImmutableRealisedVariantImpl> variants = LazyToRealisedModuleComponentResolveMetadataHelper.realiseVariants(metadata, variantMetadataRules, metadata.getVariants());
Map<String, ConfigurationMetadata> configurations = realiseConfigurations(metadata, variantMetadataRules);
if (variants.isEmpty()) {
addVariantsFromRules(metadata, configurations, variantMetadataRules);
}
return new RealisedIvyModuleResolveMetadata(metadata, variants, configurations);
}
use of org.gradle.internal.component.model.ConfigurationMetadata in project gradle by gradle.
the class RealisedIvyModuleResolveMetadata method withDependencies.
private IvyModuleResolveMetadata withDependencies(Map<IvyDependencyDescriptor, IvyDependencyDescriptor> transformed) {
ImmutableList<IvyDependencyDescriptor> transformedDescriptors = ImmutableList.copyOf(transformed.values());
Set<String> configurationNames = getConfigurationNames();
Map<String, ConfigurationMetadata> transformedConfigurations = Maps.newHashMapWithExpectedSize(configurationNames.size());
for (String name : configurationNames) {
RealisedConfigurationMetadata configuration = (RealisedConfigurationMetadata) getConfiguration(name);
List<? extends DependencyMetadata> dependencies = configuration.getDependencies();
ImmutableList.Builder<ModuleDependencyMetadata> transformedConfigurationDependencies = ImmutableList.builder();
for (DependencyMetadata dependency : dependencies) {
if (dependency instanceof ConfigurationBoundExternalDependencyMetadata) {
transformedConfigurationDependencies.add(((ConfigurationBoundExternalDependencyMetadata) dependency).withDescriptor(transformed.get(((ConfigurationBoundExternalDependencyMetadata) dependency).getDependencyDescriptor())));
} else {
transformedConfigurationDependencies.add((ModuleDependencyMetadata) dependency);
}
}
transformedConfigurations.put(name, configuration.withDependencies(transformedConfigurationDependencies.build()));
}
return new RealisedIvyModuleResolveMetadata(this, transformedDescriptors, transformedConfigurations);
}
use of org.gradle.internal.component.model.ConfigurationMetadata in project gradle by gradle.
the class RealisedMavenModuleResolveMetadataSerializationHelper method readMetadata.
public ModuleComponentResolveMetadata readMetadata(Decoder decoder, DefaultMavenModuleResolveMetadata resolveMetadata, Map<Integer, MavenDependencyDescriptor> deduplicationDependencyCache) throws IOException {
Map<String, List<GradleDependencyMetadata>> variantToDependencies = readVariantDependencies(decoder);
ImmutableList<? extends ComponentVariant> variants = resolveMetadata.getVariants();
ImmutableList.Builder<AbstractRealisedModuleComponentResolveMetadata.ImmutableRealisedVariantImpl> builder = ImmutableList.builder();
for (ComponentVariant variant : variants) {
builder.add(new AbstractRealisedModuleComponentResolveMetadata.ImmutableRealisedVariantImpl(resolveMetadata.getId(), variant.getName(), variant.getAttributes().asImmutable(), variant.getDependencies(), variant.getDependencyConstraints(), variant.getFiles(), ImmutableCapabilities.of(variant.getCapabilities().getCapabilities()), variantToDependencies.get(variant.getName()), variant.isExternalVariant()));
}
ImmutableList<AbstractRealisedModuleComponentResolveMetadata.ImmutableRealisedVariantImpl> realisedVariants = builder.build();
Map<String, ConfigurationMetadata> configurations = readMavenConfigurations(decoder, resolveMetadata, deduplicationDependencyCache);
ImmutableList<ConfigurationMetadata> derivedVariants = readDerivedVariants(decoder, resolveMetadata, deduplicationDependencyCache);
return new RealisedMavenModuleResolveMetadata(resolveMetadata, realisedVariants, derivedVariants, configurations);
}
use of org.gradle.internal.component.model.ConfigurationMetadata in project gradle by gradle.
the class RealisedMavenModuleResolveMetadata method transform.
/**
* Factory method to transform a {@link DefaultMavenModuleResolveMetadata}, which is lazy, in a realised version.
*
* @param metadata the lazy metadata to transform
* @return the realised version of the metadata
*/
public static RealisedMavenModuleResolveMetadata transform(DefaultMavenModuleResolveMetadata metadata) {
VariantMetadataRules variantMetadataRules = metadata.getVariantMetadataRules();
ImmutableList<? extends ComponentVariant> variants = LazyToRealisedModuleComponentResolveMetadataHelper.realiseVariants(metadata, variantMetadataRules, metadata.getVariants());
Map<String, ConfigurationMetadata> configurations = Maps.newHashMapWithExpectedSize(metadata.getConfigurationNames().size());
List<ConfigurationMetadata> derivedVariants = ImmutableList.of();
if (variants.isEmpty()) {
Optional<ImmutableList<? extends ConfigurationMetadata>> maybeDeriveVariants = metadata.maybeDeriveVariants();
if (maybeDeriveVariants.isPresent()) {
ImmutableList.Builder<ConfigurationMetadata> builder = new ImmutableList.Builder<>();
for (ConfigurationMetadata derivedVariant : maybeDeriveVariants.get()) {
ImmutableList<ModuleDependencyMetadata> dependencies = Cast.uncheckedCast(derivedVariant.getDependencies());
// We do not need to apply the rules manually to derived variants, because the derivation already
// instantiated 'derivedVariant' as 'DefaultConfigurationMetadata' which does the rules application
// automatically when calling the getters (done in the code below).
RealisedConfigurationMetadata derivedVariantMetadata = new RealisedConfigurationMetadata(metadata.getId(), derivedVariant.getName(), derivedVariant.isTransitive(), derivedVariant.isVisible(), derivedVariant.getHierarchy(), Cast.uncheckedCast(derivedVariant.getArtifacts()), derivedVariant.getExcludes(), derivedVariant.getAttributes(), (ImmutableCapabilities) derivedVariant.getCapabilities(), dependencies, false, derivedVariant.isExternalVariant());
builder.add(derivedVariantMetadata);
}
derivedVariants = addVariantsFromRules(metadata, builder.build(), variantMetadataRules);
}
}
for (String configurationName : metadata.getConfigurationNames()) {
configurations.put(configurationName, createConfiguration(metadata, configurationName));
}
return new RealisedMavenModuleResolveMetadata(metadata, variants, derivedVariants, configurations);
}
Aggregations