Command-Line Interface Reference (original) (raw)
The following sections describe the use of the Gradle command-line interface.
Some plugins also add their own command line options. For example, --tests
, which is added by Java test filtering. For more information on exposing command line options for your own tasks, see Declaring command-line options.
Executing tasks
You can learn about what projects and tasks are available in the project reporting section.
Most builds support a common set of tasks known as lifecycle tasks. These include the build
, assemble
, and check
tasks.
To execute a task called myTask
on the root project, type:
This will run the single myTask
and all of its dependencies.
Specify options for tasks
To pass an option to a task, prefix the option name with --
after the task name:
$ gradle :exampleTask --exampleOption=exampleValue
Disambiguate task options from built-in options
Gradle does not prevent tasks from registering options that conflict with Gradle’s built-in options, like --profile
or --help
.
You can fix conflicting task options from Gradle’s built-in options with a --
delimiter before the task name in the command:
$ gradle [--built-in-option-name...] -- [taskName...] [--task-option-name...]
Consider a task named mytask
that accepts an option named profile
:
- In
gradle mytask --profile
, Gradle accepts--profile
as the built-in Gradle option. - In
gradle -- mytask --profile=value
, Gradle passes--profile
as a task option.
Executing tasks in multi-project builds
In a multi-project build, subproject tasks can be executed with :
separating the subproject name and task name. The following are equivalent when run from the root project:
$ gradle :subproject:taskName
$ gradle subproject:taskName
You can also run a task for all subprojects using a task selector that consists of only the task name.
The following command runs the test
task for all subprojects when invoked from the root project directory:
To recap:
// Run a task in the root project only
$ gradle :exampleTask --exampleOption=exampleValue
// Run a task that may exist in the root or any subproject (ambiguous if defined in more than one)
$ gradle exampleTask --exampleOption=exampleValue
// Run a task in a specific subproject
$ gradle subproject:exampleTask --exampleOption=exampleValue
$ gradle :subproject:exampleTask --exampleOption=exampleValue
| | Some tasks selectors, like help or dependencies, will only run the task on the project they are invoked on and not on all the subprojects. | | --------------------------------------------------------------------------------------------------------------------------------------------- |
When invoking Gradle from within a subproject, the project name should be omitted:
| | When executing the Gradle Wrapper from a subproject directory, reference gradlew relatively. For example: ../gradlew taskName. | | --------------------------------------------------------------------------------------------------------------------------------- |
Executing multiple tasks
You can also specify multiple tasks. The tasks' dependencies determine the precise order of execution, and a task having no dependencies may execute earlier than it is listed on the command-line.
For example, the following will execute the test
and deploy
tasks in the order that they are listed on the command-line and will also execute the dependencies for each task.
Command line order safety
Although Gradle will always attempt to execute the build quickly, command line ordering safety will also be honored.
For example, the following will execute clean
and build
along with their dependencies:
However, the intention implied in the command line order is that clean
should run first and then build
. It would be incorrect to execute clean
after build
, even if doing so would cause the build to execute faster since clean
would remove what build
created.
Conversely, if the command line order was build
followed by clean
, it would not be correct to execute clean
before build
. Although Gradle will execute the build as quickly as possible, it will also respect the safety of the order of tasks specified on the command line and ensure that clean
runs before build
when specified in that order.
Note that command line order safety relies on tasks properly declaring what they create, consume, or remove.
Excluding tasks from execution
You can exclude a task from being executed using the -x
or --exclude-task
command-line option and providing the name of the task to exclude:
$ gradle dist --exclude-task test
Task :compile compiling source
Task :dist building the distribution
BUILD SUCCESSFUL in 0s 2 actionable tasks: 2 executed
You can see that the test
task is not executed, even though the dist
task depends on it. The test
task’s dependencies, such as compileTest
, are not executed either. The dependencies of test
that other tasks depend on, such as compile
, are still executed.
Forcing tasks to execute
You can force Gradle to execute all tasks ignoring up-to-date checks using the --rerun-tasks
option:
$ gradle test --rerun-tasks
This will force test
and all task dependencies of test
to execute. It is similar to running gradle clean test
, but without the build’s generated output being deleted.
Alternatively, you can tell Gradle to rerun a specific task using the --rerun
built-in task option.
Continue the build after a task failure
By default, Gradle aborts execution and fails the build when any task fails. This allows the build to complete sooner and prevents cascading failures from obfuscating the root cause of an error.
You can use the --continue
option to force Gradle to execute every task when a failure occurs:
When executed with --continue
, Gradle executes every task in the build if all the dependencies for that task are completed without failure.
For example, tests do not run if there is a compilation error in the code under test because the test
task depends on the compilation
task. Gradle outputs each of the encountered failures at the end of the build.
| | If any tests fail, many test suites fail the entire test task. Code coverage and reporting tools frequently run after the test task, so "fail fast" behavior may halt execution before those tools run. | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
Name abbreviation
When you specify tasks on the command-line, you don’t have to provide the full name of the task. You can provide enough of the task name to identify the task uniquely. For example, it is likely gradle che
is enough for Gradle to identify the check
task.
The same applies to project names. You can execute the check
task in the library
subproject with the gradle lib:che
command.
You can use camel case patterns for more complex abbreviations. These patterns are expanded to match camel case and kebab case names. For example, the pattern foBa
(or fB
) matches fooBar
and foo-bar
.
More concretely, you can run the compileTest
task in the my-awesome-library
subproject with the command gradle mAL:cT
.
Task :my-awesome-library:compileTest compiling unit tests
BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed
Abbreviations can also be used with the -x
command-line option.
Tracing name expansion
For complex projects, it might be ambiguous if the intended tasks were executed. When using abbreviated names, a single typo can lead to the execution of unexpected tasks.
When INFO
, or more verbose logging is enabled, the output will contain extra information about the project and task name expansion.
For example, when executing the mAL:cT
command on the previous example, the following log messages will be visible:
No exact project with name ':mAL' has been found. Checking for abbreviated names. Found exactly one project that matches the abbreviated name ':mAL': ':my-awesome-library'. No exact task with name ':cT' has been found. Checking for abbreviated names. Found exactly one task name, that matches the abbreviated name ':cT': ':compileTest'.