Search in sources :

Example 11 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 12 with SoftwareComponent

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

the class AndroidPublishPlugin method apply.

public void apply(final Project project) {
    final AndroidPublishConfiguration androidPublishConfiguration = project.getExtensions().create(ANDROID_PUBLISH_EXTENSION, AndroidPublishConfiguration.class);
    final ShipkitConfiguration conf = project.getPlugins().apply(ShipkitConfigurationPlugin.class).getConfiguration();
    project.getPlugins().apply(LocalSnapshotPlugin.class);
    Task snapshotTask = project.getTasks().getByName(LocalSnapshotPlugin.SNAPSHOT_TASK);
    snapshotTask.dependsOn(MAVEN_LOCAL_TASK);
    project.getPlugins().apply("maven-publish");
    BintrayExtension bintray = project.getExtensions().getByType(BintrayExtension.class);
    bintray.setPublications(PUBLICATION_NAME);
    project.getPlugins().withId("com.android.library", plugin -> {
        deferredConfiguration(project, () -> {
            GradleDSLHelper.publications(project, publications -> {
                MavenPublication p = publications.create(PUBLICATION_NAME, MavenPublication.class, publication -> {
                    publication.setArtifactId(androidPublishConfiguration.getArtifactId());
                    SoftwareComponent releaseComponent = project.getComponents().findByName("release");
                    if (releaseComponent == null) {
                        throw new GradleException("'release' component not found in project. " + "Make sure you are using Android Gradle Plugin 3.6.0-beta05 or newer.");
                    }
                    publication.from(releaseComponent);
                    PomCustomizer.customizePom(project, conf, publication);
                });
                LOG.info("{} - configured '{}' publication", project.getPath(), p.getArtifactId());
            });
        });
        // so that we flesh out problems with maven publication during the build process
        project.getTasks().getByName("build").dependsOn(MAVEN_LOCAL_TASK);
    });
}
Also used : AndroidPublishConfiguration(org.shipkit.gradle.configuration.AndroidPublishConfiguration) Task(org.gradle.api.Task) ShipkitConfiguration(org.shipkit.gradle.configuration.ShipkitConfiguration) ShipkitConfigurationPlugin(org.shipkit.internal.gradle.configuration.ShipkitConfigurationPlugin) GradleException(org.gradle.api.GradleException) MavenPublication(org.gradle.api.publish.maven.MavenPublication) BintrayExtension(com.jfrog.bintray.gradle.BintrayExtension) SoftwareComponent(org.gradle.api.component.SoftwareComponent)

Aggregations

SoftwareComponent (org.gradle.api.component.SoftwareComponent)12 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 Task (org.gradle.api.Task)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 BintrayExtension (com.jfrog.bintray.gradle.BintrayExtension)1 Action (org.gradle.api.Action)1 DomainObjectSet (org.gradle.api.DomainObjectSet)1 GradleException (org.gradle.api.GradleException)1 ComponentWithCoordinates (org.gradle.api.component.ComponentWithCoordinates)1 FileCollection (org.gradle.api.file.FileCollection)1