2010-11-17 67 views
4

我來管理Java構建的,我不知道如何最好地管理軟件的版本,以便它可以顯示在一個約對話框等版本在Java中

你怎麼人做呢?我們正在使用Maven,我可以以某種方式重用pom.xml中定義的版本嗎?我也有興趣知道它通常如何用Ant來完成。

回答

5

您可以通過加載pom.properties文件來獲取jar的Maven版本。這是Maven在罐子裏自動創建的。

應位於罐內,在此路徑

META-INF\maven\{groupId}\{artifactId}\pom.properties 

這是提到一點點here

+0

謝謝,這是相當整潔:)我有點擔心我不得不生成某種version.properties(像C中的version.h) – forneo 2010-11-17 21:22:05

3

基本解決方案:Maven將版本信息寫入jar中的Manifest.xml。從Java讀取此jar並提取此信息。

  1. 強制maven創建更多detailed Manifest。從Java

  2. 讀取jar文件:

    Manifest manifest = new JarFile("path/to/your.jar").getManifest(); 
    String version = manifest.getAttributes().getValue("Specification-Version:"); 
    
  3. 如果你需要找到你的罐子的位置:

    MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
    
1

我們有一個大的開發團隊,因此更爲有用讓我們確切知道我們正在運行或正在討論的給定目標版本的哪個版本。這就是爲什麼你會看到人們在版本信息中包含內部版本號。就個人而言,這是一個任意標籤,以YYYYMMddHHmmss(或類似)格式構建的時間戳提供了一個很好的自然排序版本。

maven-resource-plugin允許您在構建JAR文件時定義一個篩選字符串以替換值。然後,像讀取任何其他應用程序屬性一樣讀取值。