Luke Daley

Lead Engineer, Gradle Cloud Services

Luke works @ Gradle Inc. building Gradle Enterprise. He's also an open source tragic and is the creator of Ratpack https://ratpack.io. When not hitting the keyboard, he's likely drinking IPA or playing guitar.

Presentations

Doing full stack testing (sometimes referred to as “functional” or “acceptance” testing) of web applications is a non trivial business. While such tests are undisputedly more costly to develop, maintain and execute than simple unit tests, that's no excuse to ignore this crucial aspect of a comprehensive testing strategy. Many teams still rely on expensive manual testing for coverage at this level, citing the difficulty in managing a large body of automated functional tests. In this session we'll look at how Gradle can help by orchestrating the necessary components of a Selenium 2 based toolchain.

We'll look at how Gradle's flexibility and extensibility can be used to; provision browsers to be used for testing, parameterizing test execution, grouping tests, executing tests across different browsers, parallelizing test execution in different ways and merging test results. We'll implement a focussed build framework for developing, executing and maintaining automated web tests using Java, Selenium, TestNG and using Jenkins to run our tests for us. Automated web tests have a high cost but an extremely high value, as they can give you confidence that your software actually works when fully assembled. We'll see how Gradle can reduce the cost aspect of this equation without sacrificing on the value.

Finally, we'll briefly look at using some more progressive tooling by using Geb in place of Selenium and the Spock Framework in place of TestNG. The Geb and Spock Framework tools are both side projects of Gradleware core engineers.

The Gradle development team have not been taking it easy since the release of Gradle 1.0. New features and innovations are constantly being added, rough edges are being smoothed and the platform continues to expand. In this session we’ll explore the most notable additions to Gradle since the release of 1.0 and preview some of the new and exciting features just over the horizon with Gradle founder and Gradleware CEO Hans Dockter and Gradle core developer Peter Niederwieser.

Gradle continues to evolve with a high velocity to gain new capabilities, features and increased build performance.

We’ll dig into to some of the features incorporated since the 1.0 release, such as:

  • Maven import and archetype support
  • Parallel task execution
  • Improved Dependency Reporting
  • Dependency management improvements that make Grade the best dependency system out there.
  • Additions to the task model like soft dependencies and finalizer tasks.
  • Gradle Android and C/C++ Support
  • Improvements to the Tooling API (i.e. embedded Gradle)
  • Better scalability for large scale enterprise builds
  • Using Jenkins slaves for distributed test execution.
  • Deep integration with Arquillian for deploying to web and JEE servers.

We’ll also take a sneak peak at some of the upcoming features that will soon be available in Gradle.

One of Gradle's attractive features is that plugins are extremely simple to write and can do anything. Gradle plugins can add new functionality, enhance existing functionality or even remove undesired functionality. If you've ever wanted to write a Gradle plugin, or are interested in the deep details of plugins, then this session is for you.

In this session we'll explore some fundamental concepts that can be used as guidelines when developing plugins and new Gradle functionality, and the role of plugins and how they can be used.

We'll look at issues such as; how to implement flexible tasks, how to support convention over configuration while maintaining flexibility, how to structure plugin stacks, building and distributing plugins and testing your plugins. We'll be developing a sample plugin during the session and discussing other real world example plugins.

The larger and more diverse your technology organization, the greater the value you can realize in standardizing your build and delivery process. Internal build standards make it easier for people to switch between teams, allowing you to more readily adjust your staffing to meet changing business needs. In this session we’ll walk through examples of leveraging Gradle’s extensibility and plugin mechanisms to develop standards, enforce compliance and deliver tailored out of the box functionality. We will also look at how to provision such customisations throughout your enterprise in a controllable way.

Gradle's flexibility combined with its support for conventions, including your conventions, provides the ability to solve your automation challenges effectively in a centralised fashion.

One of the key aspects of a well oiled development workflow is the effective integration of different fit-for-purpose tools. While Gradle offers a lot out of the box, there are many great tools out there that can help you and your team at build time with many different kinds of tasks. Fortunately, Gradle is an extensible kit and offers many ways for you to leverage such tools easily.

We'll look at the techniques and APIs available for integrating tools such as code generators, web browsers, language runtimes, and even other build systems. Using embedded libraries, external processes, external Java processes, Ant tasks and even forked workers, you'll learn how you can extend Gradle by integrating your favorite tools.