@tokuhiromさんのブログエントリーを読んで、maven-git-commit-id-pluginの存在を知りました。

[java] どのブランチから作られた jar かをわかりやすくしたい

 

@makingさんから、Spring Bootなら依存を足すだけで情報が取れるようになるよと教えて頂いたので早速試してみました。

 

pom.xmlはこんな感じ。
spring-boot-starter-actuatorとgit-commit-id-pluginを追加します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArgument>-Xlint:unchecked</compilerArgument>
                <encoding>${file.encoding}</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>${file.encoding}</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
        </plugin>
    </plugins>
</build>

 

そして、 http://localhost:8080/info にリクエストを投げると、こんなレスポンスが返ってきます。

1
2
3
4
5
6
7
8
9
{
  git: {
    branch: "master",
    commit: {
      id: "a933699",
      time: "2015-02-06T02:39:50+0900"
    }
  }
}

サンプルソースは ここ に置いておきました。

 

ちなみに、僕はmaven-jar-pluginのmanifestEntries使ってJenkinsのJOB情報とGit情報をMANIFEST.MFに埋め込んでおいて、JSONで返すAPIを作ってます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                    </manifest>
                    <manifestEntries>
                        <Application-Name>${project.build.finalName}</Application-Name>
                        <Application-Version>${project.version}</Application-Version>
                        <Iteration-Name>${iteration}</Iteration-Name>
                        <Build-Time>${buildNumber}</Build-Time>
                        <JenkinsBuildNumber>${BUILD_NUMBER}</JenkinsBuildNumber>
                        <JenkinsBuildId>${BUILD_ID}</JenkinsBuildId>
                        <JenkinsJobName>${JOB_NAME}</JenkinsJobName>
                        <JenkinsBuildTag>${BUILD_TAG}</JenkinsBuildTag>
                        <JenkinsExecutorNumber>${EXECUTOR_NUMBER}</JenkinsExecutorNumber>
                        <JenkinsNodeName>${NODE_NAME}</JenkinsNodeName>
                        <JenkinsJavaHome>${JAVA_HOME}</JenkinsJavaHome>
                        <JenkinsWorkspace>${WORKSPACE}</JenkinsWorkspace>
                        <JenkinsUrl>${JENKINS_URL}</JenkinsUrl>
                        <JenkinsGitCommit>${GIT_COMMIT}</JenkinsGitCommit>
                    </manifestEntries>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>