As you see, Gradle has executed provision before deploy to satisfy the dependencies between the tasks. It works as expected, but we want to make it better: by design we will use deploy much more often then provision , because you need to deploy your application every time you have a new build. At the same time, you need to use provision only for new environments or when you need to change the execution environment (for example, to install a new version of the application server). Therefore, you do not need to provision the environment from the scratch every time when you deploy a new version. There are several options for that: