2012-01-24 171 views
15

我正在使用由abbuild表示的版本控制系統,其中a是整體版本(對於原型版本,Alpha版本和beta版本,對於主要版本爲1),b是里程碑式的版本(沿着表示原始版本,alpha版本,beta版本的階段),並且構建實際上代表了項目編譯的次數。在Java項目中自動增加內部版本號

目前,我已經從應用程序讀取文本文件,增加數字,並保存到一個文本文件,當應用程序運行調試標誌設置。

我正在尋找一種更「正確」的方法來使用Java和Netbeans來做到這一點。有什麼方法可以將構建編號注入構建過程的某個位置?最好將數字保存到項目隨附的源文件中 - 而不是依賴附近文件的存在。

+0

爲什麼構建必須是序列號?爲什麼構建文件的哈希值不夠? –

+2

查看http://stackoverflow.com/questions/690419/build-and-version-numbering-for-java-projects-ant-cvs-hudson – andersoj

+4

@MikeSamuel通常是因爲增量buildnumbers對於人來說更容易('這個版本更新「) –

回答

10

有一對夫婦是完成這一壯舉的流行Maven插件的:

Maven的發佈插件從Apache Maven項目是有點overkill用於簡單地更新版本號。因此use the latter插件來創建一個版本號(在MAJOR.MINOR.BUILD的形式;例如,其中3.1.44自動遞增)如下:

  1. 打開項目的pom.xml文件。
  2. 包含(在dependencies部分之後)build部分內的插件:
<scm> 
    <connection>scm:svn:http://127.0.0.1/dummy</connection> 
    <developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection> 
    <tag>HEAD</tag> 
    <url>http://127.0.0.1/dummy</url> 
    </scm> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>buildnumber-maven-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
      <execution> 
      <id>buildnumber</id> 
      <phase>validate</phase> 
      <goals> 
       <goal>create</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <format>{0,number}</format> 
      <items> 
      <item>buildNumber</item> 
      </items>      
      <doCheck>false</doCheck> 
      <doUpdate>false</doUpdate> 
      <revisionOnScmFailure>unknownbuild</revisionOnScmFailure> 
     </configuration> 
     </plugin>  
    </plugins> 
    <finalName>${project.artifactId}-${project.version}.${buildNumber}</finalName> 
    </build> 
  • 確保pom.xml在版本元素定義了主要和次要版本近文件的頂部。例如:
  • <version>3.1</version> 
    
  • 保存pom.xml文件。
  • 重建項目。
  • 版本號應該增加。


    該插件需要配置的源代碼管理存儲庫(<scm>)元素。如果您不關心存儲庫簽到號碼,請改爲使用dummy scm。這可以用來包含版本庫中的版本號,這是reader的練習。

    1

    您可以使用當前分支的git commit count作爲內部版本號。使用此命令行獲取提交計數:git rev-list HEAD --count

    與構建工具集成將非常簡單。如果您使用的是Gradle,那麼您可以使用此插件:https://github.com/rockerhieu/Versionberg/

    相關問題