Spring Top

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:


If you have a few years of experience in the Java ecosystem, and you're interested in sharing that experience with the community (and getting paid for your work of course), have a look at the "Write for Us" page. Cheers. Eugen

1. Overview

In this tutorial, we’re going to show how to inject Git repository information into a Maven-built Spring Boot-based application.

In order to do this we will use maven-git-commit-id-plugin – a handy tool created solely for this purpose.

2. Maven Dependencies

Let’s add a plugin to a <plugins> section of our pom.xml file of our project:


You can find the latest version here. Keep in mind that this plugin requires at least 3.1.1 version of Maven.

3. Configuration

The plugin has many convenient flags and attributes which expand its functionality. In this section we are going to briefly describe some of them. If you want to get to know all of them, visit maven-git-commit-id-plugin’s page, and if you want to go straight to the example, go to section 4.

The following snippets contain examples of plugin attributes; specify them in a <configuration></configuration> section according to your needs.

3.1. Missing Repository

You can configure it to omit errors if Git repository has not been found:


3.2. Git Repository Location

If you want to specify custom .git repository location, use dotGitDirectory attribute:


3.3. Output File

In order to generate properties file with a custom name and/or directory, use following section:


3.4. Verbosity

For more generous logging use:


3.5. Properties File Generation

You can turn off creation of a git.properties file:


3.6. Properties’ Prefix

If you want to specify a custom property prefix, use:


3.7. Only For Parent Repository

When working with project with submodules, setting this flag makes sure, that plugin works only for parent repository:


3.8. Properties Exclusion

You might want to exclude some sensitive data like repository user info:


3.9. Properties Inclusion

Including only specified data is also possible:


4. Sample Application

Let’s create a sample REST controller, which will return basic information about our project.

We will create the sample app using Spring Boot. If you don’t know how to set up a Spring Boot application, please see the introductory article: Configure a Spring Boot Web Application.

Our app will consist of 2 classes: Application and CommitIdController

4.1. Application

CommitIdApplication will serve as a root of our application:

@SpringBootApplication(scanBasePackages = { "com.baeldung.git" })
public class CommitIdApplication {
    public static void main(String[] args) {
        SpringApplication.run(CommitIdApplication.class, args);
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
        PropertySourcesPlaceholderConfigurer propsConfig 
          = new PropertySourcesPlaceholderConfigurer();
        propsConfig.setLocation(new ClassPathResource("git.properties"));
        return propsConfig;

Besides configuring the root of our application, we created PropertyPlaceHolderConfigurer bean so that we are able to access properties file generated by the plugin.

We also set some flags, so that application would run smoothly even if Spring could not resolve the git.properties file.

4.2. Controller

public class CommitInfoController {

    private String commitMessage;

    private String branch;

    private String commitId;

    public Map<String, String> getCommitId() {
        Map<String, String> result = new HashMap<>();
        result.put("Commit message",commitMessage);
        result.put("Commit branch", branch);
        result.put("Commit id", commitId);
        return result;

As you can see we are injecting Git properties into class fields.

To see all properties available refer to git.properties file or author’s Github page. We also created a simple endpoint which, on HTTP GET request, will respond with a JSON containing injected values.

4.3. Maven Entry

We’ll first set up the execution steps to be carried out by the plugin, plus any other configuration property that we consider useful:

        <!-- ... -->

In order for our code to work properly, we need to end up with a git.properties file in our classpath. To achieve this, we have two options.

The first one is to leave it up to the plugin to generate the file. We can specify this by setting the generateGitPropertiesFile configuration property a true value:


The second option is to include a git.properties file in the resources folder ourselves. We can include only the entries that we’ll use in our project:

# git.properties

Maven will replace the placeholders with the appropriate values.

Note: Some IDEs don’t work well with this plugin, and might throw a ‘circular placeholder reference’ error on bootstrap when we define the properties as we did above.

After booting and requesting localhost:8080/commitId you can see a JSON file with a structure similar to the following:

    "Commit id":"7adb64f1800f8a84c35fef9e5d15c10ab8ecffa6",
    "Commit branch":"commit_id_plugin",
    "Commit message":"Merge branch 'master' into commit_id_plugin"

5. Integration with Spring Boot Actuator

You can use the plugin with Spring Actuator easily.

As you can read in the documentation, GitInfoContributor will pick git.properties file up if available. So, with default plugin configuration, Git information will be returned when calling /info endpoint:

  "git": {
    "branch": "commit_id_plugin",
    "commit": {
      "id": "7adb64f",
      "time": "2016-08-17T19:30:34+0200"

6. Conclusion

In this tutorial we showed the basic of using maven-git-commit-id-plugin and created a simple Spring Boot application, which makes use of properties generated by the plugin.

Presented configuration does not cover all available flags and attributes, but it covers all basics necessary to start working with this plugin.

You can find code examples on Github.

Spring bottom

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:


newest oldest most voted
Notify of

For Spring Boot it’s easy to use this plugin and inject the GIT and Maven properties on the /info: ${basedir}/src/main/resources true pl.project13.maven git-commit-id-plugin 2.1.13 revision ${project.basedir}/.git Then, on spring boot properties locate on resources: [email protected]@ [email protected]@ [email protected]@ [email protected]@ [email protected]@ [email protected]@ The result on you /info will be: { "git": { "branch": "origin/master", "commit": { "time": "11.08.2016 @ 17:52:54 BRT", "id": "abc123456abc" } }, "project": { "name": "projetct-name", "version": "1.3.51", "artifact": "artifact-name" } }

Grzegorz Piwowarek
Grzegorz Piwowarek

Actually, with Spring Boot and Spring Boot Actuator it’s even easier 🙂 Actuator picks up git.properties automatically and showcases them in /info endpoint. We presented a more general approach that could be used without Spring Boot and Actuator. I guess we will add another section for this approach. Thanks!


Sorry, I cannot get this to work. The info.* fields are correct, but no git.* info is shown – only the placeholders. My result at the /info endpoint:

“project”: {
“name”: “spring-boot”,
“version”: “0.0.1-SNAPSHOT”,
“artifact”: “spring-boot”
“git”: {
“commit”: {
“time”: “@[email protected]”,
“id”: “@git.co”
“branch”: “@[email protected]

I have a local git repo and .git file at the root of my project…

Grzegorz Piwowarek
Grzegorz Piwowarek

Robin, try running the project and see if the properties file was generated by the plugin. It should be visible somewhere in the project directory


Grzegorz, thanks for your reply. I’ve got it working now. The properties files is visible in ./target/classes. That contains the generated git values for the values that were marked in my pom.xml in . Adding properties there makes the values available. Thanks again!