4

Maven ビルドで git ブランチとコミット ハッシュを使用する必要があります。

git に必要な情報を含む「git.properties」ファイルを自動的に維持させて、常に git の現在の状態を反映させる簡単な方法はありますか?

可能であれば、これをプラットフォームに依存しないソリューションにしたいと考えています

4

1 に答える 1

2

注 (2016 年ですが、実際には 2011 年 9 月に作成されました)、プロパティ ファイルに Git 情報をキャプチャする専用の maven プラグインがあります。
これは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");
            }
于 2016-08-29T11:50:23.053 に答える