The Base Plugin
The Base Plugin provides some tasks and conventions that are common to most builds and adds a structure to the build that promotes consistency in how they are run. Its most significant contribution is a set of lifecycle tasks that act as an umbrella for the more specific tasks provided by other plugins and build authors.
Usage
plugins {
base
}
plugins {
id 'base'
}
Task
clean
—Delete
-
Deletes the build directory and everything in it, i.e. the path specified by the layout.buildDirectory project property.
check
— lifecycle task-
Plugins and build authors should attach their verification tasks, such as ones that run tests, to this lifecycle task using
check.dependsOn(task)
. assemble
— lifecycle task-
Plugins and build authors should attach tasks that produce distributions and other consumable artifacts to this lifecycle task. For example,
jar
produces the consumable artifact for Java libraries. Attach tasks to this lifecycle task usingassemble.dependsOn(task)
. build
— lifecycle task-
Depends on:
check
,assemble
Intended to build everything, including running all tests, producing the production artifacts and generating documentation. You will probably rarely attach concrete tasks directly to
build
asassemble
andcheck
are typically more appropriate. buildConfiguration
— task rule-
Assembles those artifacts attached to the named configuration. For example,
buildRuntimeElements
will execute any task that is required to create any artifact attached to theruntimeElements
configuration. cleanTask
— task rule-
Removes the defined outputs of a task, e.g.
cleanJar
will delete the JAR file produced by thejar
task of the Java Plugin.
Dependency management
The Base Plugin adds no configurations for dependencies, but it does add the following configurations:
default
-
A fallback configuration used when dependency resolution is performed without request attributes.
New builds and plugins should not be using the
default
configuration! It remains solely for backwards compatibility. Dependency resolution should be performed with request attributes. archives
-
All artifacts defined on the
archives
configuration are automatically built by theassemble
task.New builds and plugins should not be using the
archives
configuration! It remains solely for backwards compatibility. Instead, task dependencies should be declared directly on theassemble
task.
Contributed extensions
The Base Plugin adds the base
extension to the project.
This allows to configure the following properties inside a dedicated DSL block.
base
extensionbase {
archivesName = "gradle"
distsDirectory = layout.buildDirectory.dir("custom-dist")
libsDirectory = layout.buildDirectory.dir("custom-libs")
}
base {
archivesName = "gradle"
distsDirectory = layout.buildDirectory.dir('custom-dist')
libsDirectory = layout.buildDirectory.dir('custom-libs')
}
archivesName
— default:$project.name
-
Provides the default AbstractArchiveTask.getArchiveBaseName() for archive tasks.
distsDirectory
— default:layout.buildDirectory.dir("distributions")
-
Default name of the directory in which distribution archives, i.e. non-JARs, are created.
libsDirectory
— default:layout.buildDirectory.dir("libs")
-
Default name of the directory in which library archives, i.e. JARs, are created.
The plugin also provides default values for the following properties on any task that extends AbstractArchiveTask:
destinationDirectory
-
Defaults to
distsDirectory
for non-JAR archives andlibsDirectory
for JARs and derivatives of JAR, such as WARs. archiveVersion
-
Defaults to
$project.version
or 'unspecified' if the project has no version. archiveBaseName
-
Defaults to
$archivesBaseName
.
Conventions (deprecated)
The Base Plugin also adds conventions related to the creation of archives, such as ZIPs, TARs and JARs. These are deprecated and superseded by the extension described above. See the BasePluginConvention DSL documentation for information on them.