2010-11-30 69 views
4

有沒有人有一個簡單的建議來記錄在運行時應用程序的標題欄中顯示的構建ID(在編譯時生成)?在Java應用程序中獲取構建ID

從Eclipse內部構建,我需要的就是ID,然後我可以將它傳遞給標題。

+0

您正在使用哪種構建工具? – 2010-11-30 14:28:02

+1

我只是在eclipse中構建它(使用ADT for Android)。所以我沒有正在生成的構建ID(我知道)。我需要先得到一個正在生成(maven做到這一點?),然後在運行時從應用程序訪問它。 – 2010-11-30 14:31:28

回答

3

如果您使用的是Ant,您可以輕鬆設置「jar」或「package」目標,以便生成包含當前時間戳的文件並將其包含在您的jar輸出中。

如果使用Maven,有幾種方法可以實現類似的功能,例如使用the antrun plugin來下載到Ant。

0

如果您完全在Eclipse中構建,則需要創建一個構建操作,它可以在源文件夾中生成一個資源,並提供所需的信息 - 屬性文件將很好地執行 - 然後傳播到您的二進制輸出,在運行之後閱讀,然後你可以做你需要展示的東西。

2

如果您想爲構建使用時間戳,可以從jar或類修改日期或MANIFEST文件中獲取該構建。

Maven使用jar中的模塊版本號填充MANIFEST文件。你可以閱讀這個來獲得你正在使用的所有maven模塊的版本。

製作「唯一ID」的時間戳部分確保每個構建都有不同的ID。

4

如果您使用的是maven,尤其是如果您想要svn的內部版本號(雖然它可以通過配置爲您生成唯一的內部版本號),請查看buildnumber-maven-plugin

只需添加類似於以下到您的pom.xml文件中的一個片段:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>buildnumber-maven-plugin</artifactId> 
      <version>1.0-beta-3</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>create</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <doCheck>true</doCheck> 
       <doUpdate>true</doUpdate> 
      </configuration> 
     </plugin> 

然後在你的POM中使用$ {} buildNumber後來指構建ID。我用它使用maven-war-plugin將這個數字寫入清單。

   <archive> 
        <manifest> 
         <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
        </manifest> 
        <manifestEntries> 
         <Implementation-Build>${buildNumber}</Implementation-Build> 
        </manifestEntries> 
       </archive>