Semantic Version Annotation Processor https://github.com/ethauvin/semver
Find a file
2016-01-23 15:55:59 -08:00
example Added version.projects property. 2016-01-23 15:55:59 -08:00
gradle/wrapper Initial commit. 2016-01-18 13:22:10 -08:00
src/main Added version.projects property. 2016-01-23 15:55:59 -08:00
.gitignore Initial commit. 2016-01-18 13:22:10 -08:00
build.gradle Added version.projects property. 2016-01-23 15:55:59 -08:00
gradlew Initial commit. 2016-01-18 13:22:10 -08:00
gradlew.bat Initial commit. 2016-01-18 13:22:10 -08:00
README.md Added version.projects property. 2016-01-23 15:55:59 -08:00
semver.iml Added version.projects property. 2016-01-23 15:55:59 -08:00
semver.ipr Added version.projects property. 2016-01-23 15:55:59 -08:00
settings.gradle Initial commit. 2016-01-18 13:22:10 -08:00
version.properties Added version.projects property. 2016-01-23 15:55:59 -08:00

Semantic Version Annotation Processor

An annotation processor that automatically generates a Version class containing the semantic version (major, minor, patch, etc.) that is read from a Properties file or defined in the annotation.

This processor was inspired by Cédric Beust's version-processor.

Examples

  • Using annotation elements:
@Version(major = 1, minor = 0, patch = 0, prerelease = "beta")
public class A {
// ...
@Version(properties = "version.properties")
public class A {
// ...

and version.properties containing:

version.major=1
version.minor=0
version.patch=0
version.prerelease=beta

Template

Upon running the annotator processor, a source file GeneratedVersion.java is automatically generated with static methods to access the semantic version data. The source is based on a fully customizable Velocity template.

@Version(template = "myversion.vm")
public class A {
// ...

The default template implements the following static methods:

Method Description Example
getProject The project name, if any. MyProject
getBuildDate The build date. java.util.Date
getVersion The full version string. 1.0.0-alpha+001
getMajor The major version. 1
getMinor The minor version. 0
getPatch The patch version. 0
getPreRelease The pre-release version, if any. alpha
getBuildMetadata The build metadata, if any. 001

Elements & Properties

The following annotation elements and properties are available:

Element Property Description Default
project version.project The project name.
major version.major The major version number. 1
minor version.major The minor version number. 0
patch version.patch The patch version number. 0
prerelease version.prerelease The pre-release version.
buildmeta version.buildmeta The build metadata version.
className The name of the generated class. GeneratedVersion
properties The properties file.
template The template file. version.vm

In order to easily incorporate with existing projects, the property keys may be assigned custom values:

@Version(
  properties = "example.properties", 
  majorKey = "example.major",
  minorKey = "example.minor",
  patchKey = "example.patch",
  prereleaseKey = "example.prerelease",
  buildmetaKey = "example.buildmeta",
  projectKey = "example.project"
)
public class Example {
// ...

with example.properties containing:

example.project=Example
example.major=1
example.minor=0
example.patch=0
...