/* * Copyright 2007-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.gradle.api.artifacts.maven; import groovy.lang.Closure; import org.gradle.api.publication.maven.internal.PomFilter; /** * Manages a set of {@link MavenPom} instances and their associated {@link PublishFilter} instances. */ public interface PomFilterContainer { String DEFAULT_ARTIFACT_POM_NAME = "default"; /** * Returns the default filter being used. . * * @see #setFilter(org.gradle.api.artifacts.maven.PublishFilter) */ PublishFilter getFilter(); /** * <p>Sets the default filter to be used. This filter is active if no custom filters have been added (see {@link #addFilter(String, org.gradle.api.artifacts.maven.PublishFilter)}). * If at least one custom filter has been added the default filter is not used any longer.</p> * <p>The default for this property is {@link PublishFilter#ALWAYS_ACCEPT}. * If there is only one artifact you are fine with this filter. If there is more than one artifact, deployment will lead to * an exception, if you don't specify a filter that selects the artifact to deploy. If you want to deploy more than one artifact you have * to use the (see {@link #addFilter(String, org.gradle.api.artifacts.maven.PublishFilter)} method.</p> * * @param defaultFilter * @see #getFilter() */ void setFilter(PublishFilter defaultFilter); /** * Returns the POM property of the custom filter. * The POM property can be used to customize the POM generation. By default the properties of such a POM object are all null. * Null means that Gradle will use default values for generating the Maven POM. Those default values are derived from the deployable artifact * and from the project type (e.g. java, war, ...). If you explicitly set a POM property, Gradle will use those instead. * * @return The Maven Pom */ MavenPom getPom(); /** * <p>Sets the default POM to be used. This POM is active if no custom filters have been added (see {@link #addFilter(String, org.gradle.api.artifacts.maven.PublishFilter)}). * If at least one custom filter has been added the default POM is not used any longer.</p> * <p>Usually you don't need to set this property as the default value provides you a POM object you might use for configuration. * By default the properties of such a POM object are all null. * If they are null, Gradle will use default values for generating the Maven POM. Those default values are derived from the deployable artifact * and from the project type (e.g. java, war, ...). If you explicitly set a POM property, Gradle will use this instead.</p> * * @param defaultPom */ void setPom(MavenPom defaultPom); /** * If you want to deploy more than one artifact you need to define filters to select each of those artifacts. The method * returns a POM object associated with this filter, that allows you to customize the POM generation for the artifact selected * by the filter. * * @param name The name of the filter * @param publishFilter The filter to use * @return The POM associated with the filter */ MavenPom addFilter(String name, PublishFilter publishFilter); /** * Adds a publish filter. * * @param name The name of the filter * @param filter The filter * @return The Maven POM associated with the closure * @see PublishFilter * @see PomFilterContainer#addFilter(String, org.gradle.api.artifacts.maven.PublishFilter) */ MavenPom addFilter(String name, Closure filter); /** * Returns a filter added with {@link #addFilter(String, org.gradle.api.artifacts.maven.PublishFilter)}. * * @param name The name of the filter */ PublishFilter filter(String name); /** * Sets the default publish filter. * * @param filter The filter to be set * @see PublishFilter * @see PomFilterContainer#setFilter(org.gradle.api.artifacts.maven.PublishFilter) */ void filter(Closure filter); /** * Returns the POM associated with a filter added with {@link #addFilter(String, org.gradle.api.artifacts.maven.PublishFilter)}. * * @param name The name of the filter. */ MavenPom pom(String name); /** * Configures a POM by a closure. The closure statements are delegated to the POM object associated with the given name. * * @param name * @param configureClosure * @return The POM object associated with the given name. * @see PomFilterContainer#pom(String) */ MavenPom pom(String name, Closure configureClosure); /** * Configures the default POM by a closure. The closure statements are delegated to the default POM. * * @param configureClosure * @return The default POM. * @see PomFilterContainer#getPom() */ MavenPom pom(Closure configureClosure); Iterable<PomFilter> getActivePomFilters(); }