Search in sources :

Example 6 with SoftwareComponent

use of org.gradle.api.component.SoftwareComponent in project gradle by gradle.

the class MavenPluginPublishingRules method addMainPublication.

@Mutate
public void addMainPublication(PublishingExtension publishing, GradlePluginDevelopmentExtension pluginDevelopment, ServiceRegistry services) {
    if (!pluginDevelopment.isAutomatedPublishing()) {
        return;
    }
    SoftwareComponentContainer componentContainer = services.get(SoftwareComponentContainer.class);
    SoftwareComponent component = componentContainer.getByName("java");
    PublicationContainer publications = publishing.getPublications();
    createMavenPluginPublication(component, publications);
}
Also used : PublicationContainer(org.gradle.api.publish.PublicationContainer) SoftwareComponent(org.gradle.api.component.SoftwareComponent) SoftwareComponentContainer(org.gradle.api.component.SoftwareComponentContainer) Mutate(org.gradle.model.Mutate)

Example 7 with SoftwareComponent

use of org.gradle.api.component.SoftwareComponent in project gradle by gradle.

the class ModuleMetadataFileGenerator method writeIdentity.

private void writeIdentity(ModuleVersionIdentifier coordinates, ImmutableAttributes attributes, SoftwareComponent component, Map<SoftwareComponent, ComponentData> componentCoordinates, Map<SoftwareComponent, SoftwareComponent> owners, JsonWriter jsonWriter) throws IOException {
    SoftwareComponent owner = owners.get(component);
    if (owner == null) {
        jsonWriter.name("component");
        jsonWriter.beginObject();
        jsonWriter.name("group");
        jsonWriter.value(coordinates.getGroup());
        jsonWriter.name("module");
        jsonWriter.value(coordinates.getName());
        jsonWriter.name("version");
        jsonWriter.value(coordinates.getVersion());
        writeAttributes(attributes, jsonWriter);
        jsonWriter.endObject();
    } else {
        ComponentData componentData = componentCoordinates.get(owner);
        ModuleVersionIdentifier ownerCoordinates = componentData.coordinates;
        jsonWriter.name("component");
        jsonWriter.beginObject();
        jsonWriter.name("url");
        jsonWriter.value(relativeUrlTo(coordinates, ownerCoordinates));
        jsonWriter.name("group");
        jsonWriter.value(ownerCoordinates.getGroup());
        jsonWriter.name("module");
        jsonWriter.value(ownerCoordinates.getName());
        jsonWriter.name("version");
        jsonWriter.value(ownerCoordinates.getVersion());
        writeAttributes(componentData.attributes, jsonWriter);
        jsonWriter.endObject();
    }
}
Also used : ModuleVersionIdentifier(org.gradle.api.artifacts.ModuleVersionIdentifier) SoftwareComponent(org.gradle.api.component.SoftwareComponent)

Example 8 with SoftwareComponent

use of org.gradle.api.component.SoftwareComponent in project gradle by gradle.

the class ModuleMetadataFileGenerator method generateTo.

public void generateTo(PublicationInternal publication, Collection<? extends PublicationInternal> publications, Writer writer) throws IOException {
    // Collect a map from component to coordinates. This might be better to move to the component or some publications model
    Map<SoftwareComponent, ComponentData> coordinates = new HashMap<SoftwareComponent, ComponentData>();
    collectCoordinates(publications, coordinates);
    // Collect a map from component to its owning component. This might be better to move to the component or some publications model
    Map<SoftwareComponent, SoftwareComponent> owners = new HashMap<SoftwareComponent, SoftwareComponent>();
    collectOwners(publications, owners);
    // Write the output
    JsonWriter jsonWriter = new JsonWriter(writer);
    jsonWriter.setHtmlSafe(false);
    jsonWriter.setIndent("  ");
    writeComponentWithVariants(publication, publication.getComponent(), coordinates, owners, jsonWriter);
    jsonWriter.flush();
    writer.append('\n');
}
Also used : HashMap(java.util.HashMap) JsonWriter(com.google.gson.stream.JsonWriter) SoftwareComponent(org.gradle.api.component.SoftwareComponent)

Example 9 with SoftwareComponent

use of org.gradle.api.component.SoftwareComponent in project gradle by gradle.

the class ModuleMetadataFileGenerator method writeVariants.

private void writeVariants(PublicationInternal publication, SoftwareComponent component, Map<SoftwareComponent, ComponentData> componentCoordinates, JsonWriter jsonWriter) throws IOException {
    boolean started = false;
    for (UsageContext usageContext : ((SoftwareComponentInternal) component).getUsages()) {
        if (!started) {
            jsonWriter.name("variants");
            jsonWriter.beginArray();
            started = true;
        }
        writeVariantHostedInThisModule(publication, usageContext, jsonWriter);
    }
    if (component instanceof ComponentWithVariants) {
        for (SoftwareComponent childComponent : ((ComponentWithVariants) component).getVariants()) {
            ModuleVersionIdentifier childCoordinates;
            if (childComponent instanceof ComponentWithCoordinates) {
                childCoordinates = ((ComponentWithCoordinates) childComponent).getCoordinates();
            } else {
                ComponentData componentData = componentCoordinates.get(childComponent);
                childCoordinates = componentData == null ? null : componentData.coordinates;
            }
            assert childCoordinates != null;
            if (childComponent instanceof SoftwareComponentInternal) {
                for (UsageContext usageContext : ((SoftwareComponentInternal) childComponent).getUsages()) {
                    if (!started) {
                        jsonWriter.name("variants");
                        jsonWriter.beginArray();
                        started = true;
                    }
                    writeVariantHostedInAnotherModule(publication.getCoordinates(), childCoordinates, usageContext, jsonWriter);
                }
            }
        }
    }
    if (started) {
        jsonWriter.endArray();
    }
}
Also used : ModuleVersionIdentifier(org.gradle.api.artifacts.ModuleVersionIdentifier) ComponentWithCoordinates(org.gradle.api.component.ComponentWithCoordinates) UsageContext(org.gradle.api.internal.component.UsageContext) ComponentWithVariants(org.gradle.api.component.ComponentWithVariants) SoftwareComponentInternal(org.gradle.api.internal.component.SoftwareComponentInternal) SoftwareComponent(org.gradle.api.component.SoftwareComponent)

Example 10 with SoftwareComponent

use of org.gradle.api.component.SoftwareComponent in project gradle by gradle.

the class ModuleMetadataSpecBuilder method identity.

private ModuleMetadataSpec.Identity identity() {
    // Collect a map from component to its owning component. This might be better to move to the component or some publications model
    Map<SoftwareComponent, SoftwareComponent> owners = new HashMap<>();
    collectOwners(publications, owners);
    SoftwareComponent owner = owners.get(component);
    ComponentData ownerData = owner == null ? null : componentCoordinates.get(owner);
    ComponentData componentData = new ComponentData(publication.getCoordinates(), publication.getAttributes());
    return ownerData != null ? identityFor(ownerData, relativeUrlTo(componentData.coordinates, ownerData.coordinates)) : identityFor(componentData, null);
}
Also used : HashMap(java.util.HashMap) SoftwareComponent(org.gradle.api.component.SoftwareComponent)

Aggregations

SoftwareComponent (org.gradle.api.component.SoftwareComponent)11 ComponentWithVariants (org.gradle.api.component.ComponentWithVariants)5 ArrayList (java.util.ArrayList)3 ModuleVersionIdentifier (org.gradle.api.artifacts.ModuleVersionIdentifier)3 HashMap (java.util.HashMap)2 HashSet (java.util.HashSet)2 LinkedHashSet (java.util.LinkedHashSet)2 SoftwareComponentContainer (org.gradle.api.component.SoftwareComponentContainer)2 SoftwareComponentInternal (org.gradle.api.internal.component.SoftwareComponentInternal)2 UsageContext (org.gradle.api.internal.component.UsageContext)2 PublicationContainer (org.gradle.api.publish.PublicationContainer)2 Mutate (org.gradle.model.Mutate)2 JsonWriter (com.google.gson.stream.JsonWriter)1 Action (org.gradle.api.Action)1 DomainObjectSet (org.gradle.api.DomainObjectSet)1 Task (org.gradle.api.Task)1 ComponentWithCoordinates (org.gradle.api.component.ComponentWithCoordinates)1 FileCollection (org.gradle.api.file.FileCollection)1 DefaultModuleVersionIdentifier (org.gradle.api.internal.artifacts.DefaultModuleVersionIdentifier)1 ProjectInternal (org.gradle.api.internal.project.ProjectInternal)1