This Maven plugin can see the version when each individual file was changed
in a local Git repository, and insert that version in that file in
a place where it is specified with a $version-stub$ stub. It determines the
version when a file was last modified based in Git tags in your local
repository under you Maven project's directory.
The main intended use case is to automatically fill out @version tags in
javadocs.
Add the following to a <plugins> section in your pom.xml, preferably
under some profile (you generally don't want this plugin to run on every build):
<plugin>
<groupId>org.tendiwa</groupId>
<artifactId>git-version-insert-maven-plugin</artifactId>
<version>0.1</version>
</plugin>That's it, no configuration is required.
In your Maven project you have a file src/main/java/org/myproject/App .java with this javadoc inside:
/**
* Application entry point
* @version $version-stub$
* @since 0.1
*/
...And you also have this in file src/test/java/org/myrpoject/AppTest.java:
/**
* Test for application entry point.
* @version $version-stub$
* @since 0.2
*/
...You have three tags in your repository indicating release versions: 0.1, 0 .2 and 0.3. Suppose the last commit the first file was changed in was
after the commit marked with git tag 0.1. And the second file was last
modified in version 0.3. Then if you run git-vesion-insert:insert-version
goal in your Maven build, the contents of the files in your working directory
will be replaced with the following:
src/main/java/org/myproject/App.java:
/**
* Application entry point
* @version 0.1
* @since 0.1
*/
...src/test/java/org/myrpoject/AppTest.java:
/**
* Test for application entry point.
* @version 0.3
* @since 0.2
*/
...You use this plugin in a similar manner to [versions:set goal in
versions-maven-plugin](http://www.mojohaus.org/versions-maven-plugin/set-mojo
.html): unlike most plugins, these both operate not on your target
directory (that is cleaned with mvn clean), but on your sources.
Recommended workflow is:
- Under Git, keep files with
$version-stub$stubs, not with actual versions already inserted bygit-version-insertplugin; - Make
git-version-insert:insert-versionsgoal a part of your release lifecycle (e.g. create a Maven profile that gets applied only when you release the project); - To release a new version (e.g. by deploying to Maven Central via a Nexus), clone your git repository in a separate location and from there run your release lifecycle.