org.gradle.api.tasks.SourceSet Maven / Gradle / Ivy
Show all versions of gradle-api Show documentation
/*
* 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.tasks;
import groovy.lang.Closure;
import org.gradle.api.Action;
import org.gradle.api.Incubating;
import org.gradle.api.file.FileCollection;
import org.gradle.api.file.SourceDirectorySet;
/**
* A {@code SourceSet} represents a logical group of Java source and resources.
*
* See the example below how {@link SourceSet} 'main' is accessed and how the {@link SourceDirectorySet} 'java'
* is configured to exclude some package from compilation.
*
*
* apply plugin: 'java'
*
* sourceSets {
* main {
* java {
* exclude 'some/unwanted/package/**'
* }
* }
* }
*
*/
public interface SourceSet {
/**
* The name of the main source set.
*/
String MAIN_SOURCE_SET_NAME = "main";
/**
* The name of the test source set.
*/
String TEST_SOURCE_SET_NAME = "test";
/**
* Returns the name of this source set.
*
* @return The name. Never returns null.
*/
String getName();
/**
* Returns the classpath used to compile this source.
*
* @return The classpath. Never returns null.
*/
FileCollection getCompileClasspath();
/**
* Sets the classpath used to compile this source.
*
* @param classpath The classpath. Should not be null.
*/
void setCompileClasspath(FileCollection classpath);
/**
* Returns the classpath used to execute this source.
*
* @return The classpath. Never returns null.
*/
FileCollection getRuntimeClasspath();
/**
* Sets the classpath used to execute this source.
*
* @param classpath The classpath. Should not be null.
*/
void setRuntimeClasspath(FileCollection classpath);
/**
* {@link SourceSetOutput} is a {@link FileCollection} of all output directories (compiled classes, processed resources, etc.)
* and it provides means to configure the default output dirs and register additional output dirs. See examples in {@link SourceSetOutput}
*
* @return The output dirs, as a {@link SourceSetOutput}.
*/
SourceSetOutput getOutput();
/**
* Registers a set of tasks which are responsible for compiling this source set into the classes directory. The
* paths are evaluated as per {@link org.gradle.api.Task#dependsOn(Object...)}.
*
* @param taskPaths The tasks which compile this source set.
* @return this
*/
SourceSet compiledBy(Object... taskPaths);
/**
* Returns the non-Java resources which are to be copied into the resources output directory.
*
* @return the resources. Never returns null.
*/
SourceDirectorySet getResources();
/**
* Configures the non-Java resources for this set.
*
* The given closure is used to configure the {@link SourceDirectorySet} which contains the resources.
*
* @param configureClosure The closure to use to configure the resources.
* @return this
*/
SourceSet resources(Closure configureClosure);
/**
* Configures the non-Java resources for this set.
*
*
The given action is used to configure the {@link SourceDirectorySet} which contains the resources.
*
* @param configureAction The action to use to configure the resources.
* @return this
*/
SourceSet resources(Action super SourceDirectorySet> configureAction);
/**
* Returns the Java source which is to be compiled by the Java compiler into the class output directory.
*
* @return the Java source. Never returns null.
*/
SourceDirectorySet getJava();
/**
* Configures the Java source for this set.
*
*
The given closure is used to configure the {@link SourceDirectorySet} which contains the Java source.
*
* @param configureClosure The closure to use to configure the Java source.
* @return this
*/
SourceSet java(Closure configureClosure);
/**
* Configures the Java source for this set.
*
*
The given action is used to configure the {@link SourceDirectorySet} which contains the Java source.
*
* @param configureAction The action to use to configure the Java source.
* @return this
*/
SourceSet java(Action super SourceDirectorySet> configureAction);
/**
* All Java source files for this source set. This includes, for example, source which is directly compiled, and
* source which is indirectly compiled through joint compilation.
*
* @return the Java source. Never returns null.
*/
SourceDirectorySet getAllJava();
/**
* All source files for this source set.
*
* @return the source. Never returns null.
*/
SourceDirectorySet getAllSource();
/**
* Returns the name of the classes task for this source set.
*
* @return The task name. Never returns null.
*/
String getClassesTaskName();
/**
* Returns the name of the resource process task for this source set.
*
* @return The task name. Never returns null.
*/
String getProcessResourcesTaskName();
/**
* Returns the name of the compile Java task for this source set.
*
* @return The task name. Never returns null.
*/
String getCompileJavaTaskName();
/**
* Returns the name of a compile task for this source set.
*
* @param language The language to be compiled.
* @return The task name. Never returns null.
*/
String getCompileTaskName(String language);
/**
* Returns the name of the Jar task for this source set.
*
* @return The task name. Never returns null.
*/
String getJarTaskName();
/**
* Returns the name of a task for this source set.
*
* @param verb The action, may be null.
* @param target The target, may be null
* @return The task name, generally of the form ${verb}${name}${noun}
*/
String getTaskName(String verb, String target);
/**
* Returns the name of the compile configuration for this source set.
* @return The configuration name
*/
String getCompileConfigurationName();
/**
* Returns the name of the runtime configuration for this source set.
* @return The runtime configuration name
*/
String getRuntimeConfigurationName();
/**
* Returns the name of the compile only configuration for this source set.
* @return The compile only configuration name
*
* @since 2.12
*/
@Incubating
String getCompileOnlyConfigurationName();
/**
* Returns the name of the compile classpath configuration for this source set.
* @return The compile classpath configuration
*
* @since 2.12
*/
@Incubating
String getCompileClasspathConfigurationName();
/**
* Returns the name of the API configuration for this source set. The API configuration
* contains dependencies which are exported by this source set, and is not transitive
* by default. This configuration is not meant to be resolved and should only contain
* dependencies that are required when compiling against this component.
*
* @return The API configuration name
*
* @since 3.3
*/
@Incubating
String getApiConfigurationName();
/**
* Returns the name of the implementation configuration for this source set. The implementation
* configuration should contain dependencies which are specific to the implementation of the component
* (internal APIs).
* @return The configuration name
* @since 3.4
*/
@Incubating
String getImplementationConfigurationName();
/**
* Returns the name of the configuration that should be used when compiling against the API
* of this component. This configuration is meant to be consumed by other components when
* they need to compile against it.
*
* @return The API compile configuration name
*
* @since 3.3
*/
@Incubating
String getApiElementsConfigurationName();
/**
* Returns the name of the configuration that contains dependencies that are only required
* at runtime of the component. Dependencies found in this configuration are visible to
* the runtime classpath of the component, but not to consumers.
*
* @return the runtime only configuration name
* @since 3.4
*/
@Incubating
String getRuntimeOnlyConfigurationName();
/**
* Returns the name of the runtime classpath configuration of this component: the runtime
* classpath contains elements of the implementation, as well as runtime only elements.
*
* @return the name of the runtime classpath configuration
* @since 3.4
*/
@Incubating
String getRuntimeClasspathConfigurationName();
/**
* Returns the name of the configuration containing elements that are stricly required
* at runtime. Consumers of this configuration will get all the mandatory elements for
* this component to execute at runtime.
*
* @return the name of the runtime elements configuration.
* @since 3.4
*/
@Incubating
String getRuntimeElementsConfigurationName();
}