git-commit-id

git-commit-id/git-commit-id-maven-plugin

Java LGPL-3.0 DevOps

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... :-)

1.7k stars
299 forks
recent
GitHub +2 / week

1.7k

Stars

299

Forks

29

Open issues

30

Contributors

v10.0.0 03 Apr 2026

AI Analysis

This Maven plugin injects git repository metadata (commit hash, branch, timestamp, etc.) into the build process and runtime, enabling applications to report their exact build version in production environments. It's specialized for Java/Maven teams using distributed deployments who need version traceability; not useful for projects outside the Maven/Java ecosystem or those not requiring runtime version visibility.

DevOps Developer Tool Discovery value: 4/10
Documentation 8/10
Activity 8/10
Community 8/10
Code quality 7/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 7/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

maven-plugin build-automation git-metadata java-versioning ci-cd
Actively maintained Well documented Popular Niche/specialized use case Production ready
Deep Analysis · Based on README and public signals
3d ago

Maven plugin that embeds git metadata into builds; mature, widely adopted in enterprise Java ecosystems

git-commit-id-maven-plugin solves a specific, well-defined problem: making git repository state (commit hash, branch, tags, build time) available at application runtime. This enables operators to identify exactly which code version is running in production—critical in large distributed systems. Named users include Spring Boot, Neo4j, and FoundationDB. The plugin is distributed via Maven Central, actively maintained, and has achieved stable product-market fit in the Java/Maven ecosystem.

Origin

Created in 2011 by @ktoso as a response to deployment visibility needs. Has been continuously maintained and refined over 15 years, accumulating 50+ contributors. Represents a solved problem with no significant architectural overhauls needed—the plugin does one thing well and has stayed focused.

Growth

Growth peaked earlier in the project lifecycle (pre-2020s) as Java microservices and containerization became standard practice. Current growth is flat (1 star in 7 days as of 2026-06-29), which is expected for a mature, feature-complete utility. The project has stabilized into low-velocity maintenance mode—bug fixes, dependency updates, and minor features rather than major innovation.

In production

Production adoption is well-documented. README explicitly names Spring Boot (as upstream dependency), Neo4j, FoundationDB, Akamai, Sabre, EasyDITA as confirmed users. Maven Central distribution ensures discoverability. Spring Boot's inclusion of this plugin in official documentation is significant validation. However, no quantitative metrics (download counts, version distribution, deployment statistics) are publicly disclosed.

Code analysis
Architecture

Appears to be a standard Maven Mojo that executes during the initialize phase, gathering git metadata via native git binaries or JGit library, then exporting as properties file and/or Java POJO. README indicates support for both code generation and resource loading paths. Likely uses JGit as fallback when native git unavailable, based on contributor notes mentioning 'native git support shipped'.

Tests

README does not document test coverage metrics. Build status badge present (passing on master). Contributor notes mention 'framework to do integration testing' was added by @mostr, but specific coverage percentages not disclosed.

Maintenance

Last push 2026-06-29 (8 days before analysis date), indicating active upkeep. Minimum requirements updated to Java 11 + Maven 3.9.0 (reasonably current). Version 9.2.0 in use indicates regular releases. README references 50 contributors and credits current maintainers (@ktoso founder, @TheSnoozer active). No stalled issues or deprecation notices visible. Project appears actively maintained, not stagnant—maintenance is low-frequency but consistent.

Honest verdict

ADOPT IF: you use Maven, Java 11+, and need runtime visibility into which exact git commit is running in production; especially valuable in large distributed deployments where rollback decisions depend on version tracking. AVOID IF: you've migrated to Gradle (use gradle-git-properties instead), or if your deployment pipeline already provides version/commit metadata through image labels, container registries, or orchestration platforms (e.g., Kubernetes). MONITOR IF: you're considering a build system migration away from Maven—plugin remains maintained but ecosystem lock-in increases switching costs.

Independent dimensions

Mainstream potential

3/10

Technical importance

6/10

Adoption evidence

7/10

Risks
  • Project has flat/minimal growth trajectory—may signal it is no longer attractive to new adopters, though this is consistent with a mature utility that 'just works'.
  • Maven Central distribution dependency means any Maven mirror or tooling outage affects availability, though this is endemic to Maven ecosystem.
  • Limited maintainer bandwidth (@ktoso + @TheSnoozer as primary maintainers)—severe issues may experience slower response times than larger projects.
  • Git-heavy deployments (e.g., monorepos with thousands of commits) may experience build-time performance impact; README does not document performance characteristics at scale.
  • Lock-in to JVM ecosystem—no native support for non-Maven build systems, limiting relevance as alternatives (Gradle, Bazel) grow.
Prediction

Will remain stable, low-velocity maintenance project. Unlikely to gain significant new adoption outside Maven/Java communities. May gradually lose relative mindshare as container registries and orchestration platforms (Docker, Kubernetes) become the canonical source of deployment metadata. However, will likely continue solving the problem well for existing users indefinitely.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Java
100%

Information

Language
Java
License
LGPL-3.0
Last updated
2w ago
Created
188mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

apache

apache/maven

Apache Maven is a build automation and project management tool for Java...

5.3k Java Dev Tools
ben-manes

ben-manes/gradle-versions-plugin

Gradle Versions Plugin discovers and reports available dependency updates and...

4.1k Kotlin DevOps
GitTools

GitTools/GitVersion

GitVersion automates semantic versioning for Git-based projects by analyzing...

3.1k C# DevOps
gitbucket

gitbucket/gitbucket

GitBucket is a self-hosted Git platform written in Scala that provides...

9.4k Scala Dev Tools
tj

tj/git-extras

Git Extras provides a collection of utility commands that extend Git's...

18.1k Shell Dev Tools
vs. alternatives
Maven shade plugin / assembly plugin

Those plugins handle packaging; git-commit-id complements them by injecting metadata before packaging. Not direct competitors, solve different problems.

gradle-git-properties (Gradle ecosystem)

Equivalent functionality for Gradle builds. Indicates the problem domain is language/tool-agnostic and likely solved independently in each build ecosystem.

Manual version file management

git-commit-id automates what teams otherwise do by hand (git describe, echo to file). Reduces manual error and build-time coupling to version control state.

Docker LABEL / image metadata

Modern container deployments also embed git info in image labels (Dockerfile ENV/LABEL). This plugin predates containerization becoming standard; still relevant but less critical in container-first workflows.

Actuator endpoints (Spring Boot native)

Spring Boot's actuator provides build info via /actuator/env. git-commit-id complements by populating the source data; often used together, not interchangeable.