Gradle Goodness: Replacing
Gradle 3.2 deprecates the << operator to add actions to a task. The << operator maps to the leftShift method of a task. This operator confuses a lot people that are new to Gradle. Because without the operator we are configuring a task instead of adding actions. I can tell from experience the mistake is easily made. If we use the << in our build script with Gradle 3.2 we get a warning on the console. The warning message already mentions a solution: use the doLast method to add actions.
In the following example build script we define the task deprecatedSample using the << operator. The other task newSample uses the doLast method to add an action:
// Since Gradle 3.2 the << (leftShift) operator
// is deprecated. The operator can confuse
// people, because without the operator
// we would configure the deprecatedSample task,
// instead of adding the action statement:
// println 'Sample task'.
task deprecatedSample << {
println 'Sample task'
}
// To have no confusion we should use
// the doLast method of a task to add
// the action statement:
// println 'Sample task'.
task newSample {
doLast {
println 'Sample task'
}
}
When we run the deprecatedSample task we see in the output the warning that the leftShift method has been deprecated:
$ gradle deprecatedSample
The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.
at build_dq65b0mbv52w2ikhya3h9ru8d.run(/Users/mrhaki/Projects/sample/build.gradle)
:deprecatedSample
Sample task
BUILD SUCCESSFUL
Total time: 0.793 secs
$
We still have time to fix our build scripts, because in Gradle 5 the leftShift method will be removed.
Written with Gradle 3.2.