mirror of
https://github.com/ethauvin/version-processor.git
synced 2025-04-25 07:57:12 -07:00
50 lines
1.5 KiB
Markdown
50 lines
1.5 KiB
Markdown
# A simple annotation processing example
|
|
|
|
This project demonstrates a simple annotation processor that is built with [Kobalt](http://beust.com/kobalt). The annotation processor allows you to generate a `Version` class containing a version number that is either read from a `Properties` file or directly defined in the annotation.
|
|
|
|
There are two modules in this project:
|
|
|
|
- The processor (`processor/`)
|
|
- The example using the processor (`example/`)
|
|
|
|
The `processor` project defines an annotation `@Version` that lets you specify a version number in two ways:
|
|
|
|
- Either provide a `value` for the version.
|
|
- Or you provide a `fileName` pointing to a `Properties` file. This file contains the version number either with the default key `version` or with your own key, which you can specify with the `propertyName` attribute.
|
|
|
|
For example:
|
|
|
|
```
|
|
@Version(fileName = "example/src/main/properties/version.properties",
|
|
propertyName = "example.version")
|
|
public class A {
|
|
// ...
|
|
```
|
|
|
|
And the content of the `version.properties` file:
|
|
|
|
```
|
|
example.version=1.4
|
|
```
|
|
|
|
When the annotation processor is run, it generates a source file `GeneratedVersion.java` with a static field containing that version number.
|
|
|
|
The `example` project has a single class `Example` which is annotated with `@Version` and which then displays the value of the version from the `GeneratedVersion` generated class.
|
|
|
|
To build and run the example:
|
|
|
|
```
|
|
|
|
./kobaltw run
|
|
|
|
```
|
|
|
|
To install and run from Kobalt:
|
|
|
|
```
|
|
|
|
dependencies {
|
|
apt("com.beust:version-processor:0.1")
|
|
}
|
|
|
|
```
|