[英]How can I add file version detail on properties to a .jar?
我希望添加一個產品版本號以顯示在 my.jar 文件信息中。 目前我在我的 Spring 引導項目中使用 Maven 作為 API Rest。
我已經閱讀了很多關於清單版本控制的解決方案。 您必須在那里解壓縮並訪問 META-INF/MANIFEST.MF 以檢查實現版本。 這對我要找的東西來說太乏味了。
就像一個.exe。 您可以在鼠標右鍵單擊 -> 詳細信息 -> “產品版本”下找到它,或者只需檢查文件版本列,如圖所示。 文件版本說明示例。
我還讀到 JAR 文件是一種基於流行的 ZIP 文件格式的文件格式,用於將許多文件聚合成一個文件。 我有點想將文件版本添加到 .zip,但我還是想問一下這是否可能。
問候,加斯帕。
JAR 文件本身不能有版本。 但是您使用的是 Maven,這意味着您已經可以訪問 Maven 版本:
try (InputStream inputStream = getClass().getResourceAsStream("/META-INF/maven/<groupId>/<artifactId>/pom.properties")) {
Properties properties = new Properties();
properties.load(inputStream);
// available properties:
// - artifactId=xxx
// - groupId=xxx
// - version=xxx
}
請注意,這在單元測試中通常不起作用(尤其是從 IDE 運行時),因為文件僅添加到 JAR 文件中。
只需在您的 jar 中的任何位置包含一個文本文件。所有類型的構建系統都使這變得微不足道。 然后在你的代碼中寫下你用版本讀出這個文本文件,並在屏幕上顯示它。
在 maven、gradle 等中,要在 jar 中包含一個純文本文件,只需將其放入src/main/resources/version.txt
中,它就會自動包含。
在 java 閱讀:
public class Main {
public static String getVersion() {
try (var in = Main.class.getResourceAsStream("/version.txt")) {
return new String(in.readAllBytes(), StandardCharsets.UTF_8);
}
}
}
這個:
.class
文件的相同系統加載 version.txt。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.