/gradle-training

Learn about Gradle concepts and features in small steps

Primary LanguageGroovy

Gradle training

Training files for learning Gradle

##01-build-and-test

Example contains one class and one simple test written in TestNG. List all available tasks:

gradle tasks

Try to compile source code:

gradle compile

Run tests:

gradle tests

Test report is available in build/reports/tests/index.html

02-pmd

Execute PMD check on project.

gradle check

You should see one warning about empty if statement in source code. Results are stored in: build/reports/pmd/main.html

03-checkstyle

Execute Checkstyle on project. Configuration of Checkstyle is stored in config/checkstyle/checkstyle.xml

gradle check

Error report is available in file: build/reports/checkstyle/main.xml

04-findbugs

Execute FindBugs on project.

gradle check

Report is available in file: build/reports/findbugs/main.html

05-jdepend

Execute JDepend on project.

gradle check

Report is available in file: build/reports/jdepend/main.txt You should see there one dependency cyle.

06-maven-deployer

Upload artifact to local repo (directory).

gradle uA

Artifact will be stored at: /idea/training/repo

07-c-language

It is possible to build project written in C language by gradle. Gradle automatically detects toolchain e.g. Visual Studio or GCC.

gradle mainExecutable

Binary is stored in build/binaries/mainExecutable

08-c-visual-studio

Gradle is able to generate project files for Visual Studio for C/C++.

gradle mainVisualStudio
ii .\visualStudio\mainExe.sln

Solution file is stored in visualStudio/mainExe.sln

09-custom-task-dolast

Gradle evaluates build scripts in two phases. The first one is configuration. Gradle examines each task definition and execute code in definition. The second phase is execution where it actually executes code. The code is stored in doLast block. If you omit that block then println will execute always even when you run gradle tasks

gradle tasks
gradle helloWorld

10-custom-task-dofirst

doLast allows to append execution code at the end of task. There is another method doFirst which prepends code before current code. It's useful when building decorators.

gradle tasks
gradle helloWorld

11-task-class

Gradle allows to define custom task class. This class should contain one method with annotation @TaskAction. This method will be executed. Each property defined on class level is configurable from gradle task (see verboseToday).

gradle tasks
gradle today
gradle verboseToday

12-custom-plugin

It's possible to specify tasks outside build.gradle and then "include" file. Gradle uses notion of plugins. Check helloPlugin.gradle file.

gradle tasks
gradle helloFromPlugin

13-plugin-from-gist

Gradle allows to include code/plugins from network resource. In this example plugin is stored as gist at Github

14-custom-groovy-plugin

Example of stand alone plugin written in Groovy. Compile and install this plugin to your local Maven repository. Then you will be able to use it in the next example.

gradle install

Pay attention to special file: src/main/resources/META-INF/gradle-pluginslines-count.properties This file will cause that it will be possible to apply plugin by it's id instead of java class name. It's preferred solution in Gradle world, because it gives you more flexibility when changing plugin implementation

15-use-custom-plugin

You need to install plugin to your local Maven storage (see example 14.). This example shows how to include plugin from local Maven storage. Plugin is just counting lines in build.gradle file in current directory.

gradle tasks
gradle countLines

16-stop-build

It is possible to stop build by throwing exception.

gradle workingTask
gradle failingTask

17-testng-groovy

Example combines usage of TestNG for testing and tests written in Groovy. It is necessary to declare 'useTestNG()' in test configuration. Otherwise tests won't be executed.

gradle test

Reports are stored in build/reports/tests/index.html