将代码编译时间和分支信息记录到发布文件

场景

项目发布中,不同客户很多时候是由分支来管理的,但同时也存在很多用标准产品的客户,就会出现同一个分支不同时间的代码出现在不同的客户那边。

但是在发布很久之后可能需要修复某个 bug,这时候是不需要部署最新代码的(避免出现新问题),所以要找到当时发布时那个节点的代码,对应修复部署即可。

之前的做法是在发布的时候,打个 tag,但有时候容易忘记,并且也会导致 tag 太多混乱

解决办法

git-commit-id-maven-plugin 插件

找到一款叫做 git-commit-id-maven-plugin 的插件,可以很方便的将当前编译的时间、分支信息加入到文件中,使用方法也很简单。

github 主页:https://github.com/git-commit-id/git-commit-id-maven-plugin

pom.xml 集成插件

注意,这里的 groupId 和 artifactId 会根据 jdk 版本不同而有不同的写法,下面这种写法是 jdk8 的写法,具体请参考 github 中的使用方法

<plugin>
    <groupId>pl.project13.maven</groupId>
    <artifactId>git-commit-id-plugin</artifactId>
    <version>4.0.5</version>
    <executions>
        <execution>
            <id>get-the-git-infos</id>
            <goals>
                <goal>revision</goal>
            </goals>
            <phase>initialize</phase>
        </execution>
    </executions>
    <configuration>
        <generateGitPropertiesFile>true</generateGitPropertiesFile>
        <generateGitPropertiesFilename>${project.build.outputDirectory}/com/buidinfo.txt</generateGitPropertiesFilename>
        <commitIdGenerationMode>full</commitIdGenerationMode>
    </configuration>
</plugin>

这样,在 maven 编译的时候,就会在对应的目录下写入 git 信息,如图:
file

这样的话,后续就能很方便的知道这次代码是什么编译的,什么时候更新的了。

集成到 IDEA 的 Tomcat 插件中

日常使用 IDEA 来开发的话,也可以配置到 tomcat 插件中。

  1. 在 pom 配置完后后,刷新下 maven 工具栏,就会出现对应的插件方法:
    file

  2. 编辑 Tomcat 配置,在构建前的步骤中,增加一个步骤:Run Maven Goal

    这么做是因为这个插件是绑定的 maven 的生命周期的,而 IDEA 的自带的 Build 步骤不是通过maven 来实现的,所以启动 Tomcat 的时候不能触发 maven 的 compile
    另外一种做法是,将 IDEA 的编译步骤代理给 maven https://www.jetbrains.com/help/idea/delegate-build-and-run-actions-to-maven.html#delegate_to_maven

    file

  3. 运行命令为:git-commit-id:revision ,并且将这个步骤放到 Build 和发布之间,顺序不能出错。

file

至此,这个需求完成,因为这个是老项目,经常更新的就只有 com 代码包,所以这个 buildinfo.txt 文件我是放到了 com 目录中,可以在 pom.xml 中修改文件位置

站内相关文章:

Comment ()
如果您有不同的看法,或者疑问,欢迎指教