如何让git维护一个包含选择信息的git.properties文件

我们需要在maven构建中使用git分支和commit哈希.

有没有一种简单的方法让git自动维护一个带有我们需要的信息的“git.properties”文件,以便它始终反映git的当前状态?

如果可能的话,我们希望这是一个与平台无关的解决方案

最佳答案 注意(2016年,但实际上是在2011年9月创建的),有一个maven插件专门用于捕获属性文件中的
Git信息.

它是
ktoso/maven-git-commit-id-plugin一个.

    <dependency>
        <groupId>pl.project13.maven</groupId>
        <artifactId>git-commit-id-plugin</artifactId>
        <version>2.2.1</version>
    </dependency>

然后:

    <plugins>
        <plugin>
            <groupId>pl.project13.maven</groupId>
            <artifactId>git-commit-id-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <phase>initialize</phase>
                <execution>
                    <id>get-the-git-infos</id>
                    <goals>
                        <goal>revision</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <generateGitPropertiesFile>true</generateGitPropertiesFile>
            </configuration>
        </plugin>
    </plugins>

在您的情况下,由于您“在Maven构建过程中很早就需要此信息”,因此我添加了< phase> initialize< / phase>为了在默认的jar maven生命周期中尽早触发它.

然后我在执行插件时使用它,以便打印与Git相关的调试数据,这有助于了解该插件的确切版本.

            Properties prop = new Properties();
            ClassLoader loader = Thread.currentThread().getContextClassLoader();
            InputStream stream = loader.getResourceAsStream("git.properties");
            if (stream != null) {
                prop.load(stream);
                String dirty = prop.getProperty("git.dirty");
                if (dirty.equals("false")) {
                    dirty = "";
                } else {
                    dirty = "(dirty)";
                }
                ver = ver + prop.getProperty("git.build.version")+dirty;
                ver = ver + " - " + prop.getProperty("git.commit.id.describe");
                ver = ver + " - " + prop.getProperty("git.build.time");
            } else {
                throw new MojoFailureException("Unable to find MyProject git.properties");
            }
点赞