If you run Gradle, it checks for the existence of a folder called buildSrc. Just put your build source code in this folder and stick to the layout convention for a Java/Groovy project (see Table 9.1). Gradle then automatically compiles and tests this code and puts it in the classpath of your build script. You don’t need to provide any further instruction. For multi-project builds there can be only one buildSrc directory which has to be in the root project.
This is probably good enough for most of the cases. If you need more flexibility, you can provide a build.gradle and a settings.gradle file in the buildSrc folder. If you like, you can even have a multi-project build in there.
If your build script needs external libraries you can declare them in the settings.gradle file.
You can pass any of the dependencies described in section ?? (except project dependencies). There is no need to provide a dependency configuration(e.g. compile). For multi-project builds dependencies declared in the settings.gradle file of the root project, are available to all build scripts of the sub-projects.
For reasons we don’t fully understand yet, external dependencies are not picked up by Ant’s optional tasks. But you can easily do it in another way.2
Gradle offers you a variety of ways of organizing your build logic. You can choose what is right for your domain and find the right balance between unnecessary indirections, and avoiding redundancy and a hard to maintain code base. It is our experience that even very complex custom build logic is rarely shared between different builds. Other build tools enforce a separation of this build logic into a separate project. Gradle spares you this unnecessary overhead and indirection.