Quick start to Gradle
We recently migrated the ballerina build system to Gradle due to the performance issues we had with maven. Building with Gradle is significantly faster than maven. We found it much more flexible to write build scripts with groovy.
Gradle wrapper — No installation hassle
It is the recommended way to do a Gradle build. Gradle wrapper script makes sure the build is invoked in the preconfigured Gradle version. It will download Gradle in the initial run.
Gdub is your friend — No more ‘../../../gradlew build’
Thanks to Gradle wrapper we do not need to install Gradle, but we have to point out to gradlew
whenever we do a build. If we want to build only a project submodule gdub is a very helpful tool to have.
Build lifecycle
There are 3 phases in a Gradle build.
- Initialization
Gradle determines which projects are going to take part in the build.
2. Configuration
The build scripts of all projects which are part of the build are executed in this phase.
3. Execution
Gradle determines the subset of the tasks, created and configured during the configuration phase, to be executed. Gradle then executes each of the selected tasks.
Gradle tasks tree
You can declare tasks that depend on other tasks. For example, a simple java project gradle tasks hierarchy will look like this.
:build+--- :assemble| \--- :jar| \--- :classes| +--- :compileJava| \--- :processResources\--- :check \--- :test +--- :classes | +--- :compileJava | \--- :processResources \--- :testClasses +--- :compileTestJava | \--- :classes | +--- :compileJava | \--- :processResources \--- :processTestResources
Skipping tasks
Add -x and pass the task name. You can skip multiple tasks as well.
gw build -x test -x npmBuild
Build with no task optimizations/caching
gw build –rerun-tasks
Build with no-cache
gw build –no-build-cache
Build scans
Build scans are helpful to optimize your Gradle build. It is a shareable record of a build that provides insights into what happened and why.
gw build –scan
Verbose builds
gw build –info