use of org.gradle.api.artifacts.PublishArtifact in project gradle by gradle.
the class DefaultMavenPublication method populateFromComponent.
private void populateFromComponent() {
if (populated) {
return;
}
populated = true;
if (component == null) {
return;
}
MavenPublicationErrorChecker.checkForUnpublishableAttributes(component, documentationRegistry);
PublicationWarningsCollector publicationWarningsCollector = new PublicationWarningsCollector(LOG, UNSUPPORTED_FEATURE, INCOMPATIBLE_FEATURE, PUBLICATION_WARNING_FOOTER, "suppressPomMetadataWarningsFor");
Set<ArtifactKey> seenArtifacts = Sets.newHashSet();
Set<PublishedDependency> seenDependencies = Sets.newHashSet();
Set<DependencyConstraint> seenConstraints = Sets.newHashSet();
for (UsageContext usageContext : getSortedUsageContexts()) {
// TODO Need a smarter way to map usage to artifact classifier
for (PublishArtifact publishArtifact : usageContext.getArtifacts()) {
ArtifactKey key = new ArtifactKey(publishArtifact.getFile(), publishArtifact.getClassifier(), publishArtifact.getExtension());
if (!artifactsOverridden && seenArtifacts.add(key)) {
artifact(publishArtifact);
}
}
Set<ExcludeRule> globalExcludes = usageContext.getGlobalExcludes();
publicationWarningsCollector.newContext(usageContext.getName());
Set<MavenDependencyInternal> dependencies = dependenciesFor(usageContext);
for (ModuleDependency dependency : usageContext.getDependencies()) {
if (seenDependencies.add(PublishedDependency.of(dependency))) {
if (isDependencyWithDefaultArtifact(dependency) && dependencyMatchesProject(dependency)) {
// We skip all self referencing dependency declarations, unless they have custom artifact information
continue;
}
if (platformSupport.isTargetingPlatform(dependency)) {
if (dependency instanceof ProjectDependency) {
addImportDependencyConstraint((ProjectDependency) dependency);
} else {
if (!versionMappingInUse && isVersionMavenIncompatible(dependency.getVersion())) {
publicationWarningsCollector.addIncompatible(String.format("%s:%s:%s declared with a Maven incompatible version notation", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
addImportDependencyConstraint(dependency);
}
} else {
if (!dependency.getAttributes().isEmpty()) {
publicationWarningsCollector.addUnsupported(String.format("%s:%s:%s declared with Gradle attributes", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
if (dependency instanceof ProjectDependency) {
addProjectDependency((ProjectDependency) dependency, globalExcludes, dependencies);
} else {
if (!versionMappingInUse && isVersionMavenIncompatible(dependency.getVersion())) {
publicationWarningsCollector.addIncompatible(String.format("%s:%s:%s declared with a Maven incompatible version notation", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
addModuleDependency(dependency, globalExcludes, dependencies);
}
}
}
}
Set<MavenDependency> dependencyConstraints = dependencyConstraintsFor(usageContext);
for (DependencyConstraint dependency : usageContext.getDependencyConstraints()) {
if (seenConstraints.add(dependency)) {
if (dependency instanceof DefaultProjectDependencyConstraint) {
addDependencyConstraint((DefaultProjectDependencyConstraint) dependency, dependencyConstraints);
} else if (dependency.getVersion() != null) {
if (!versionMappingInUse && isVersionMavenIncompatible(dependency.getVersion())) {
publicationWarningsCollector.addIncompatible(String.format("constraint %s:%s:%s declared with a Maven incompatible version notation", dependency.getGroup(), dependency.getName(), dependency.getVersion()));
}
addDependencyConstraint(dependency, dependencyConstraints);
}
}
}
if (!usageContext.getCapabilities().isEmpty()) {
for (Capability capability : usageContext.getCapabilities()) {
if (isNotDefaultCapability(capability)) {
publicationWarningsCollector.addVariantUnsupported(String.format("Declares capability %s:%s:%s which cannot be mapped to Maven", capability.getGroup(), capability.getName(), capability.getVersion()));
}
}
}
}
if (!silenceAllPublicationWarnings) {
publicationWarningsCollector.complete(getDisplayName() + " pom metadata", silencedVariants);
}
}
use of org.gradle.api.artifacts.PublishArtifact in project gradle by gradle.
the class JavaPlugin method configureArchivesAndComponent.
private void configureArchivesAndComponent(Project project, final JavaPluginExtension pluginExtension) {
PublishArtifact jarArtifact = new LazyPublishArtifact(registerJarTaskFor(project, pluginExtension), ((ProjectInternal) project).getFileResolver());
Configuration apiElementConfiguration = project.getConfigurations().getByName(API_ELEMENTS_CONFIGURATION_NAME);
Configuration runtimeElementsConfiguration = project.getConfigurations().getByName(RUNTIME_ELEMENTS_CONFIGURATION_NAME);
project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(jarArtifact);
Provider<ProcessResources> processResources = project.getTasks().named(PROCESS_RESOURCES_TASK_NAME, ProcessResources.class);
addJar(apiElementConfiguration, jarArtifact);
addRuntimeVariants(runtimeElementsConfiguration, jarArtifact, mainSourceSetOf(pluginExtension), processResources);
registerSoftwareComponents(project);
}
use of org.gradle.api.artifacts.PublishArtifact in project gradle by gradle.
the class PublishArtifactLocalArtifactMetadataSerializer method write.
@Override
public void write(Encoder encoder, PublishArtifactLocalArtifactMetadata value) throws Exception {
componentIdentifierSerializer.write(encoder, value.getComponentIdentifier());
PublishArtifact publishArtifact = value.getPublishArtifact();
encoder.writeString(publishArtifact.getName());
encoder.writeString(publishArtifact.getType());
encoder.writeString(publishArtifact.getExtension());
encoder.writeNullableString(publishArtifact.getClassifier());
encoder.writeString(publishArtifact.getFile().getCanonicalPath());
}
use of org.gradle.api.artifacts.PublishArtifact in project gradle by gradle.
the class DefaultArtifactPublisher method addConfigurations.
private void addConfigurations(DefaultIvyModulePublishMetadata metaData, Collection<? extends ConfigurationInternal> configurations, boolean validateArtifacts) {
for (ConfigurationInternal configuration : configurations) {
BuildableLocalConfigurationMetadata configurationMetadata = addConfiguration(metaData, configuration);
dependenciesConverter.addDependenciesAndExcludes(configurationMetadata, configuration);
OutgoingVariant outgoingVariant = configuration.convertToOutgoingVariant();
for (PublishArtifact publishArtifact : outgoingVariant.getArtifacts()) {
if (!validateArtifacts || isValidToPublish(publishArtifact)) {
metaData.addArtifact(configuration.getName(), publishArtifact);
}
}
}
}
use of org.gradle.api.artifacts.PublishArtifact in project gradle by gradle.
the class DefaultLocalComponentMetadata method addVariant.
@Override
public void addVariant(String configuration, String name, VariantResolveMetadata.Identifier identifier, DisplayName displayName, ImmutableAttributes attributes, ImmutableCapabilities capabilities, Collection<? extends PublishArtifact> publishArtifacts) {
ImmutableList<LocalComponentArtifactMetadata> artifacts;
if (publishArtifacts.isEmpty()) {
artifacts = ImmutableList.of();
} else {
ImmutableList.Builder<LocalComponentArtifactMetadata> builder = ImmutableList.builder();
for (PublishArtifact artifact : publishArtifacts) {
builder.add(new PublishArtifactLocalArtifactMetadata(componentId, artifact));
}
artifacts = builder.build();
}
allVariants.put(configuration, new DefaultVariantMetadata(name, identifier, displayName, attributes, artifacts, capabilities));
}
Aggregations