Coder Social home page Coder Social logo

gradle-training's Introduction

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

gradle-training's People

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.