Designing and writing Gradle plugins

plugins recipes patterns gradle

Implementing plugins can be a daunting task for Gradle beginners and advanced users alike. The task requires many intricate considerations, decisions and deep knowledge about (sometimes undocumented) features. Have you ever asked yourself one of the following questions, then this session is for you!

  • What’s the best structure for my plugin code?
  • How do I make my plugin as performant, flexible and user-friendly as possible?
  • How do I ensure the best forward and backward compatibility for builds consuming my plugin?
  • How do I expose a declarative DSL to configure my plugin’s runtime behavior?

Slides | Video

Testing the build with Testkit

testing functional gradle

Build code contributes to the success of a company to a large extent. It enables an organization to deliver their software to the end user fast, frequently and reliably. With Continuous Delivery becoming a standard practice throughout the industry and build logic increasing in complexity, a need arises to verify the logic powering these processes. Gradle provides powerful support for testing build code out-of-the-box. In this demo-driven session, we will discuss the ins and outs of TestKit, a Gradle core library that helps with functional testing of build logic.

Slides | Video

Gradle plugin best practices by example

plugin reusability gradle

Gradle is a general purpose, multi-platform build tool. Plugins allow for extending Gradle’s core capabilities with reusable and targeted functionality. In this session, we’ll discuss techniques and best practices for developing your own Gradle plugins by dissecting the structure, code, documentation and supporting infrastructure of an existing Gradle plugin.

Slides | Video

Advanced Dependency Management with Gradle

dependency maven ivy gradle

Gradle’s dependency management is declarative, highly flexible and can cope with demanding requirements posed by enterprise projects. Among its key functionalities are transitive dependency resolution, full compatibility with existing infrastructure like Maven and Ivy repositories, as well as precise dependency resolution control, reporting and diagnostics. I am sure you are already using those features for your own projects but you can go further. In this demo-driven session, we will focus on less prominent, but extremely powerful dependency management capabilities you can use in your build today.

Slides | Video

State of the art Gradle multi-module builds

modularization ide gradle

Large, complex projects often consist of multiple modules based on particular functionality and logical boundaries. The benefits are obvious: better maintainability, less coupling and high cohesion of code. Gradle provides powerful support for configuring and executing modularized projects. In the course of this session, we will discuss the state of the art techniques for tackling highly-customized multi-project builds. Furthermore, this talk will give an outlook on the features to come.

Slides | Video

Web Application Deployments With Gradle

web deployment container gradle

Web applications live and breathe in their runtime environment, the web container. But what is the best way to install the relevant artifacts during development or as part of your deployment pipeline? In this talk, we will discuss the techniques and tooling required to implement efficient, flexible, and most importantly, automated deployment strategies to local and remote web containers with Gradle.

Slides | Video

Provisioning virtualized infrastructure with Gradle

virtualization infrastructure vagrant docker gradle

Server infrastructure and configuration plays a crucial role in every build pipeline. It provides the runtime environment for your application and is used as basis for automated acceptance and exploratory testing. Managing infrastructure manually is time-consuming and error-prone. Virtualization helps to provide a repeatable, “production-like” environment. In this talk, we’ll discuss how Gradle integrates with popular tools for creating virtual machines (VMs) as part of a standardized deployment and release process.

Slides | Video

Building a Continuous Delivery Pipeline with Gradle and Jenkins

ci cd pipeline jenkins gradle

Getting software from a developer’s machine to a production environment without a fully automated process is time-consuming and error-prone. Continuous Delivery enables building, testing and deploying of software through build pipelines with well-defined quality gates. In this session, we will discuss how to build an exemplary pipeline with the help of Gradle and Jenkins.

Slides | Video