Skip to content

Latest commit

 

History

History

gradle

Gradle Build Infra

This subdirectory provides shared Gradle build conventions, which are designed for a hardened security posture and high- performance build experience on modern JVM toolchains. This framework of convention plugins (and other artifacts) runs the gamut in terms of project applicability, but has a particular focus for JVM applications and library authors, especially with Kotlin.

What's so great about these?

Plugins are provided for integrating various Java ecosystem features with Gradle, especially around JPMS. There are plugins which also set sensible baseline defaults, including:

  • Better reproducibility of archives (zip, tar, jar), which improves cacheability of outputs
  • Sensible defaults for dependency security, including dependency locking and verification
  • Strong configuration for linting and code checking, with unopinionated configuration control
  • Testing features like test logging and multi-module merged test + coverage reporting out of the box

Tip

👆 These are the features included with use of any plugin provided here.

Available Plugins

On top of the above functionality, there are feature plugins:

  • dev.elide.base: Just applies the baselines above, but can be switched off, too, to avoid interfering with your current build settings.

  • dev.elide.jmod: Build jmod artifacts in Gradle JVM projects with Java 9+. jmod artifacts are compatible with jlink and make for great optimized build artifacts in modular projects.

  • dev.elide.jpms: Toolkit plugin for Gradle builds enabled with modular Java (Java Platform Module System, or JPMS). Provides a modulepath configuration and modular builds for Java, Kotlin, and GraalVM.

  • dev.elide.mrjar: Plugin for easily building multi-target MRJAR artifacts. This plugin goes above and beyond by building the entire project at each bytecode tier, so that modern Java runtimes can leverage the latest available bytecode for your app or library.

  • dev.elide.jlink: Plugin for using jmod and jpms to build optimized, self-contained modular Java apps using jlink.

  • dev.elide.graalvm: Plugin for using jmod and jpms to build optimized, native AOT Java apps using native-image.

  • [dev.elide.gha][12]: Integrate your Gradle build with GitHub Actions. Enables enhanced logging and reporting features, PR integrations, and other features supported by the workflows in this repo.