Single question:

In gradle, there are several configurations provided out of the box.
For example `testCompile`, `testProvided`, `testRuntime`, `javaCompile`, `javaProvided`, and so on...

Could you explain what's the difference?