kirillzh / gradle-training

Learn about Gradle concepts and features in small steps

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Gradle training

Training files for learning Gradle

Further resources:

##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 jar

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/exe/main

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

18-debug-gradle-script

Do not run in daemon mode. Set environment variable GRADLE_OPTS to

"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

Start gradle task

gradle hello

Attach remote debugger from Ide.

More information: http://georgik.sinusgear.com/2014/06/23/how-to-debug-gradle-script/

19-war-jetty

Simple web app deployed to local jetty. It will compile sources from src/main/webapp into web application.

gradle jettyRun

Application is accessible at: http://localhost:8080/19-war-jetty

Press CTRL+C to stop server.

20-grails

Grails is framework for building web applications. This example let you bootstrap initial Grails project.

gradle init

Gradle Grails plugin will create project skeleton. You can start sample portal by:

gradle grails-run-app

Result is available at: http://localhost:8080/20-grails

More information: https://github.com/grails/grails-gradle-plugin Video recording from Building Grails App With Gradle: http://youtu.be/FwZvDU2Jeh8

21-custom-task-in-one-file

Gradle has support for defining custom task classes. Task class could be extended e.g. from DefaultTask.

You can verify this sample by:

gradle hello
gradle greeting

22-custom-task-in-buildSrc

In previous example we discussed how to add custom task. Storing many custom tasks in one file makes it unreadable. It's possible to split logic into Groovy classes.

Create buildSrc directory with src/main/groovy. Store here the class. It's necessary to add package name declaration and imports from GradleAPI.

Functionality is the same:

gradle hello
gradle greeting

About

Learn about Gradle concepts and features in small steps


Languages

Language:Java 77.2%Language:Groovy 19.8%Language:C 3.0%