2012-08-27 35 views
3

我需要通過從我的Web Java應用程序的前端http響應發送內部版本號。但是在構建時設置它的最好和正確的方法是什麼?我在竹子上使用maven。我知道我可以pass version number to maven。但我不確定接下來的步驟。我只考慮從maven執行ant,從ant編寫版本到屬性文件,並使用來自java應用程序的資源讀取它。請給出一些建議。謝謝如何使用maven將版本號設置爲java web應用程序?

回答

7

我將包含您的版本號作爲manifest.mf的一部分。如果您打算使用SVN修訂版(或任何其他SCM,您只需要查找等同的插件)作爲版本號,則可以使用maven-svn-revision-number-plugin以及maven-war-plugin

下面是關於如何使用SVN使用它的一個例子:

<plugin> 
    <groupId>com.google.code.maven-svn-revision-number-plugin</groupId> 
    <artifactId>svn-revision-number-maven-plugin</artifactId> 
    <version>1.13</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>revision</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <entries> 
      <entry> 
       <prefix>scm</prefix> 
      </entry> 
     </entries> 
    </configuration> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <archive> 
      <manifestEntries> 
       <SCM-Revision>${scm.revision}</SCM-Revision> 
      </manifestEntries> 
     </archive> 
    </configuration> 
</plugin> 

然後從你的控制器/ Servlet的閱讀:

ServletContext application = getServletConfig().getServletContext(); 
InputStream inputStream = application.getResourceAsStream("/META-INF/MANIFEST.MF"); 
Manifest manifest = new Manifest(inputStream); 
Attributes attr = manifest.getMainAttributes(); 
String value = attr.getValue("SCM-Revision"); 
+0

我喜歡它,謝謝! –

9

我看到沒有問題,使版本文件(我們在我們的項目中使用這種方法)。如果您知道在構建時您將擁有一些財產(f.e. ${build.version}),則可以使用篩選來實現您的目標。

1)具有以下內容

Version: ${build.version} 

2)以下內容添加到您的pom.xml src/main/resources下創建版本的文件:

<resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
    </resource> 
</resources> 

3)建設項目。篩選的版本文件應該出現在target/classes中。

2

我建議使用buildnumber-maven-plugin,這將設置${buildNumber}屬性,你可以這樣寫MANIFEST.MF(如果是WAR):

<plugin> 
    <artifactId>maven-war-plugin</artifactId> 
    <configuration> 
    <archive> 
     <manifestEntries> 
     <SCM-Revision>${buildNumber}</SCM-Revision> 
     </manifestEntries> 
    </archive> 
    </configuration> 
</plugin> 

然後,您可以使用java.util.jar.Manifest類閱讀它。看看我們如何在jcabi-manifests中做到這一點。下面是一個真實的例子(我們正在使用Git):pom.xml。該應用程序部署到Heroku:www.s3auth.com。您可以在網頁的右下角看到修訂號。

相關問題