我們需要在我們的maven版本中使用git分支並提交散列。如何讓git維護一個包含選擇信息的git.properties文件
有沒有一種簡單的方法讓git自動維護一個帶有我們需要的信息的「git.properties」文件,以便它始終反映git的當前狀態?
我們希望這是一個與平臺無關的解決方案,如果在所有可能的
我們需要在我們的maven版本中使用git分支並提交散列。如何讓git維護一個包含選擇信息的git.properties文件
有沒有一種簡單的方法讓git自動維護一個帶有我們需要的信息的「git.properties」文件,以便它始終反映git的當前狀態?
我們希望這是一個與平臺無關的解決方案,如果在所有可能的
還有一種就是,但你不希望它。您可以在git鉤子中維護這些信息,但這些信息的目的不是版本化的,所以您必須在每個存儲庫上設置它們。
然而,maven應該能夠調用一個進程,不是嗎?所以它應該能夠運行git並在需要時生成文件。
問題是我在Maven構建過程中很早就需要這些信息,如果它已經存在,它會使事情變得更簡單。此外,我們只需要在單個存儲庫中的所有分支上使用它。 –
然後你的問題的答案是一個git鉤子。你看過那些嗎? – Chronial
無法讀取進程而不是文件的輸出?很難認真對待那種無法做到的工具。 –
注意(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>
然後:
在你的情況,因爲你「需要這些信息在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");
}
你在git.properties文件中需要什麼?分支的提交散列? – Rawkode
我需要由'git rev-parse --abbrev-ref HEAD'報告的分支名稱和由'git rev-parse HEAD'報告的當前散列爲兩行「git.branch = xxxx」和「 git.hash = YYYY」。 –