All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.gradle.api.plugins.PluginContainer Maven / Gradle / Ivy

There is a newer version: 8.6
Show newest version
/*
 * Copyright 2010 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.plugins;

import org.gradle.api.Action;
import org.gradle.api.Plugin;

import javax.annotation.Nullable;

/**
 * 

A {@code PluginContainer} is used to manage a set of {@link org.gradle.api.Plugin} instances applied to a * particular project.

* *

Plugins can be specified using either an id or type. The id of a plugin is specified using a * META-INF/gradle-plugins/${id}.properties classpath resource.

*/ public interface PluginContainer extends PluginCollection { /** * Has the same behavior as {@link #apply(Class)} except that the plugin is specified via its id. Not all * plugins have an id. * * @param id The id of the plugin to be applied. * @return The plugin which has been used against the project. */ Plugin apply(String id); /** * Applies a plugin to the project. This usually means that the plugin uses the project API to add and modify the * state of the project. This method can be called an arbitrary number of times for a particular plugin type. The * plugin will be actually used only the first time this method is called. * * @param type The type of the plugin to be used * @return The plugin which has been used against the project. */ T apply(Class type); /** * Returns true if the container has a plugin with the given id, false otherwise. * * @param id The id of the plugin */ boolean hasPlugin(String id); /** * Returns true if the container has a plugin with the given type, false otherwise. * * @param type The type of the plugin */ boolean hasPlugin(Class type); /** * Returns the plugin for the given id. * * @param id The id of the plugin * @return the plugin or null if no plugin for the given id exists. */ @Nullable Plugin findPlugin(String id); /** * Returns the plugin for the given type. * * @param type The type of the plugin * @return the plugin or null if no plugin for the given type exists. */ @Nullable T findPlugin(Class type); /** * Returns a plugin with the specified id if this plugin has been used in the project. * * @param id The id of the plugin * @throws UnknownPluginException When there is no plugin with the given id. */ Plugin getPlugin(String id) throws UnknownPluginException; /** * Returns a plugin with the specified type if this plugin has been used in the project. * * @param type The type of the plugin * @throws UnknownPluginException When there is no plugin with the given type. */ T getPlugin(Class type) throws UnknownPluginException; /** * Returns a plugin with the specified id if this plugin has been used in the project. You can use the Groovy * {@code []} operator to call this method from a build script. * * @param id The id of the plugin * @throws UnknownPluginException When there is no plugin with the given id. */ Plugin getAt(String id) throws UnknownPluginException; /** * Returns a plugin with the specified type if this plugin has been used in the project. You can use the Groovy * {@code []} operator to call this method from a build script. * * @param type The type of the plugin * @throws UnknownPluginException When there is no plugin with the given type. */ T getAt(Class type) throws UnknownPluginException; /** * Executes or registers an action for a plugin with given id. * If the plugin was already applied, the action is executed. * If the plugin is applied sometime later the action will be executed after the plugin is applied. * If the plugin is never applied, the action is never executed. * The behavior is similar to {@link #withType(Class, org.gradle.api.Action)}. * * @param pluginId the id of the plugin * @param action the action */ void withId(String pluginId, Action action); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy