Maven plugin which includes build-time git repository information into an POJO / *.properties). Make your apps tell you which version exactly they were built from! Priceless in large distributed deployments... :-)
git-commit-id-maven-plugin is a plugin quite similar to Build Number Maven Plugin for example but as the Build Number plugin at the time when I started this plugin only supported CVS and SVN, something had to be done.
I had to quickly develop a Git version of such a plugin. For those who don’t know the plugin, it basically helps you with the following tasks and answers related questions
If you are more interested in the different use-cases, feel free to read about them in more detail.
GitCommitIdMojo.java
as JavadocThe plugin is available from Maven Central (see here), so you don’t have to configure any additional repositories to use this plugin.
A detailed description of using the plugin is available in the Using the plugin document. All you need to do in the basic setup is to include that plugin definition in your pom.xml
.
For more advanced users we also prepared a guide to provide a brief overview of the more advanced configurations… read on!
Newer version (5.x.x or more recent) are available via
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
older version (4.x.x or older) are available via:
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
The current version is 9.0.0 (changelist).
You can check the available versions by visiting search.maven.org, though using the newest is obviously the best choice.
Here is an overview of the current plugin compatibility with Java
Plugin Version | Required Java Version |
---|---|
2.1.X | Java 1.6 |
2.2.X | Java 1.7 |
3.X.X | Java 1.8 |
4.X.X | Java 1.8 |
5.X.X | Java 11 |
6.X.X | Java 11 |
7.X.X | Java 11 |
8.X.X | Java 11 |
9.X.X | Java 11 |
Even though this plugin tries to be compatible with every Maven version there are some known limitations with specific versions. Here is a list that tries to outline the current state of the art:
Plugin Version | Minimal Required Maven version |
---|---|
2.1.X | Maven 2.2.1 up to v2.1.13; Maven 3.1.1 for any later 2.1.X |
2.2.X | Maven 3.1.1 up to v2.2.3; Maven 3.0 for any later 2.2.X |
3.X.X | Maven 3.0 |
4.X.X | Maven 3.0 |
5.X.X | Maven 3.1.0-alpha-1 |
6.X.X | Maven 3.1.0-alpha-1 |
7.X.X | Maven 3.2.5 |
8.X.X | Maven 3.2.5 |
9.X.X | Maven 3.6.3 |
Flipping the table to maven:
Please note that in theory maven 4.X should support all maven 3 plugins.
The plugin was first shipped with maven 3 support in version v2.1.14 (requiring maven version 3.1.1).
Hence the v2.1.14 should be the first supported version.
Only starting with 6.X.X this plugin was acually tested with 4.0.0-alpha-5,
but some releases might not work since Maven 4 announced that plugins require Maven 3.2.5 or later
which would only be the case for plugin versions 7.0.0 or later.
Maven Version | Plugin Version | Notes |
---|---|---|
Maven 3.X | any | The plugin requires at least a maven 3.1.0-alpha-1 |
Maven 4.X | from v2.1.14 |
End of life (EOL) Maven versions are no longer supported by Maven, nor this plugin.
The following information is made available for reference.
Maven Version | Plugin Version | Notes |
---|---|---|
Maven 2.0.11 | up to 2.2.6 | Maven 2 is EOL, git-commit-id-plugin:1.0 doesn’t work – requires maven version 2.2.1 |
Maven 2.2.1 | up to 2.2.6 | Maven 2 is EOL |
Maven 3.0.X | up to 4.0.5 | git-commit-id-plugin:2.1.14, 2.1.15, 2.2.0, 2.2.1, 2.2.3 doesn’t work – requires maven version 3.1.1 |
Maven 3.0.X | up to 4.0.5 | For git-commit-id-plugin 2.2.4 or higher: works, but failed to load class “org.slf4j.impl.StaticLoggerBinder” |
Maven 3.1.0 | any | git-commit-id-plugin:2.1.14, 2.1.15, 2.2.0, 2.2.1, 2.2.3 doesn’t work – requires maven version 3.1.1 |
Maven 3.3.1 | any | git-commit-id-plugin:2.1.14 doesn’t work |
Maven 3.3.3 | any | git-commit-id-plugin:2.1.14 doesn’t work |
Note:
As an example – this table should be read as: For Maven 3.1.0
any
Plugin Version should work, besides the ones listed in the Notes
have the limitations listed.
If you really want to use snapshots, here’s the repository they are deployed to.
But I highly recommend using only stable versions, from Maven Central… 😃
<pluginRepositories>
<pluginRepository>
<id>sonatype-snapshots</id>
<name>Sonatype Snapshots</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</pluginRepository>
</pluginRepositories>
Older Snapshots (prior version 5.X) are available via <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
.
If you just would like to see what the plugin can do, you can clone the repository and run
mvn clean install -Dmaven.test.skip=true && mvn clean package -Pdemo -Dmaven.test.skip=true
This project is currently maintained thanks to: @ktoso (founder), @TheSnoozer
I’d like to give a big thanks to some of these folks, for their suggestions and / or pull requests that helped make this plugin as popular as it is today:
I’m releasing this plugin under the GNU Lesser General Public License 3.0.
You’re free to use it as you wish, the full license text is attached in the LICENSE file.
The best way to ask for features / improvements is via the Issues section on GitHub - it’s better than email because I won’t loose when I have a “million emails inbox” day,
and maybe someone else has some idea or would like to upvote your issue.
That’s all folks! Happy hacking!