Search in sources :

Example 1 with Category

use of org.gradle.api.attributes.Category in project gradle by gradle.

the class PublicationErrorChecker method checkForUnpublishableAttributes.

/**
 * Checks that the given component does not have any attributes that are not allowed to be published.
 *
 * @param component the component to check
 * @param documentationRegistry for creating helpful links in error messages upon failing the check
 * @throws PublishException if the component uses attributes invalid for publication
 */
public static void checkForUnpublishableAttributes(SoftwareComponentInternal component, DocumentationRegistry documentationRegistry) {
    for (final UsageContext usageContext : component.getUsages()) {
        Optional<Attribute<?>> category = usageContext.getAttributes().keySet().stream().filter(a -> Category.CATEGORY_ATTRIBUTE.getName().equals(a.getName())).findFirst();
        category.ifPresent(c -> {
            Object value = usageContext.getAttributes().getAttribute(c);
            if (value != null && Category.VERIFICATION.equals(value.toString())) {
                throw new PublishException("Cannot publish module metadata for component '" + component.getName() + "' which would include a variant '" + usageContext.getName() + "' that contains a '" + Category.CATEGORY_ATTRIBUTE.getName() + "' attribute with a value of '" + Category.VERIFICATION + "'.  This attribute is reserved for test verification output and is not publishable.  See: " + documentationRegistry.getDocumentationFor("variant_attributes.html", "sec:verification_category"));
            }
        });
    }
}
Also used : SoftwareComponentInternal(org.gradle.api.internal.component.SoftwareComponentInternal) Attribute(org.gradle.api.attributes.Attribute) Category(org.gradle.api.attributes.Category) Optional(java.util.Optional) DocumentationRegistry(org.gradle.api.internal.DocumentationRegistry) UsageContext(org.gradle.api.internal.component.UsageContext) PublishException(org.gradle.api.artifacts.PublishException) UsageContext(org.gradle.api.internal.component.UsageContext) Attribute(org.gradle.api.attributes.Attribute) PublishException(org.gradle.api.artifacts.PublishException)

Aggregations

Optional (java.util.Optional)1 PublishException (org.gradle.api.artifacts.PublishException)1 Attribute (org.gradle.api.attributes.Attribute)1 Category (org.gradle.api.attributes.Category)1 DocumentationRegistry (org.gradle.api.internal.DocumentationRegistry)1 SoftwareComponentInternal (org.gradle.api.internal.component.SoftwareComponentInternal)1 UsageContext (org.gradle.api.internal.component.UsageContext)1