Inject gradle.properties Version into an Artifact and Expose it to version Command

From NovaOrdis Knowledge Base
Revision as of 01:41, 22 March 2019 by Ovidiu (talk | contribs) (Created page with "=Internal= * Gradle Programming =Overview= This is a recipe...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Internal

Overview

This is a recipe to automatically expose a project version information, normally maintained in gradle.properties, to the runtime, by embedding it into the artifact.

The steps are:

1. Write the version information, as declared in gradle.properties, into a VERSION file in build/resources/main/VERSION. We need to do it at the right time, so it will not overwritten by a task like "processResources", but it will be available when tests are run.

task stageVersionInformation {
    mustRunAfter 'testClasses'
    doFirst {
        Files.write(new File(project.buildDir, "resources/main/VERSION").toPath(), version.toString().getBytes());
    }
}

test {
    dependsOn 'stageVersionInformation'
    ...
}