Home

Awesome

Apache RAT (Release Audit Tool) Gradle Plugin

CI Apache License 2

This plugin allows to run the Apache RAT release audit tool, focused on licenses.

Installation

In your build.gradle(.kts) file:

plugins {
    id("org.nosphere.apache.rat") version "0.8.1"
}

Usage

The plugin registers a task named rat that you can configure in your build.gradle(.kts) file:

<details open> <summary>Kotlin DSL</summary>
tasks.rat {

    // Use the default RAT license header matchers, defaults to `true`
    addDefaultMatchers.set(false)

    // Add custom substring license header matchers
    substringMatcher("family", "category", "pattern-1", "pattern-2")

    // Declare approved license families, if used, any non-declared family won't be approved
    approvedLicense("MIT")

    // Input directory, defaults to '.'
    inputDir.set("some/path")

    // List of Gradle exclude directives, defaults to ['**/.gradle/**']
    excludes.add("**/build/**")

    // RatTask 0.5.0+ implements PatternFilterable
    exclude { it.file in configurations.someConf.files }

    // Rat excludes file, one directive per line
    excludeFile.set(layout.projectDirectory.file(".rat-excludes.txt"))

    // XML, TXT and HTML reports directory, defaults to 'build/reports/rat'
    reportDir.set(file("some/other/path"))

    // Custom XSL stylesheet for the HTML report
    stylesheet.set(file("custom/rat-html-stylesheet.xsl"))

    // Fail the build on rat errors, defaults to true
    failOnError.set(false)
}
</details> <details> <summary>Groovy DSL</summary>
rat {

    // Input directory, defaults to '.'
    inputDir.set(file("some/path"))

    // List of Gradle exclude directives, defaults to ['**/.gradle/**']
    excludes.add("**/build/**")

    // Rat excludes file, one directive per line
    excludeFile.set(layout.projectDirectory.file(".rat-excludes.txt"))

    // XML, TXT and HTML reports directory, defaults to 'build/reports/rat'
    reportDir.set(file("some/other/path"))

    // Custom XSL stylesheet for the HTML report
    stylesheet.set(file("custom/rat-html-stylesheet.xsl"))

    // Fail the build on rat errors, defaults to true
    failOnError.set(false)

    // Prints the list of files with unapproved licences to the console, defaults to false
    verbose.set(true)
}
</details>

You can run the rat task by invoking Gradle:

gradle rat

If the project has a check task, then the rat task is automatically registered as dependent on the former.

When a Rat audit fails, a clickable URL of the HTML report will be printed out:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':rat'.
> Apache Rat audit failure - 35 unapproved licenses
    See file:///path/to/build/reports/rat/index.html

Apache Rat HTML Report

Compatibility matrix

PluginMin JavaMin GradleMax GradleConfiguration CacheBuild Cache
0.8.11.86.08.x🟢🟢
0.8.01.86.08.x🟡🟢
0.7.11.86.07.x🟡🟢
0.7.01.86.07.x🟡🟢
0.6.01.64.76.x🟡🟢
0.5.31.64.76.x🔴🟢
0.5.21.64.76.x🔴🟢
0.5.11.64.75.x🔴🟢
0.5.01.64.75.x🔴🟢
0.4.01.64.75.x🔴🟢
0.3.11.62.144.x🔴🟢
0.3.01.62.144.x🔴🟢
0.2.01.62.144.x🔴🟢
0.1.01.62.144.x🔴🟢