自动递增Java项目中的内部版本号

我正在使用由abbuild表示的版本控制系统,其中a是整体版本(原型,alpha和beta版本为0,主要版本为1),b是里程碑版本(沿着代表原型的行, alpha,beta阶段)和build表示项目编译的次数。

目前,我在应用程序运行时设置了调试标志,从文本文件中读取应用程序,增加数字并保存到文本文件。

我正在寻找一种更“正确”的方法来使用Java和Netbeans来做到这一点。 有什么方法可以将构建数量注入到构建过程的某个地方吗? 最好将数字保存到项目附带的源文件中 – 而不是依赖附近文件的存在。

有几个流行的Maven插件可以实现这一壮举:

  • Maven Release插件
  • Build Number Maven插件

来自Apache Maven项目的Maven Release Plugin对于简单地更新版本号有点过分 。 因此, 使用后一个插件创建版本号(以MAJOR.MINOR.BUILD的forms;例如, 3.1.4 ,其中4是自动递增的),如下所示:

  1. 打开项目的pom.xml文件。
  2. build部分中包含插件(在dependencies部分之后):
   scm:svn:http://127.0.0.1/dummy scm:svn:https://127.0.0.1/dummy HEAD http://127.0.0.1/dummy     org.codehaus.mojo buildnumber-maven-plugin 1.4   buildnumber validate  create     {0,number}  buildNumber  false false unknownbuild    ${project.artifactId}-${project.version}.${buildNumber}  
  1. 确保pom.xml在文件顶部附近的version元素中定义主要版本和次要版本。 例如:
 3.1 
  1. 保存pom.xml文件。
  2. 重建项目。

版本号应该增加。


该插件需要配置的源代码管理存储库( )元素。 如果您不关心存储库签入号码,请使用虚拟scm 。 这可以用于包括存储库中的修订号,这是读者的练习。

您可以使用当前分支的git commit count作为内部版本号。 使用此命令行获取提交计数: git rev-list HEAD --count

与构建工具集成将非常简单。 如果您使用的是Gradle,那么您可以使用此插件: https : //github.com/rockerhieu/Versionberg/

我有一些问题,并使用“戴夫贾维斯”的答案。 这会将正确的版本和内部版本号添加到localy生成的jar文件中,如:myProject-3.1.1234.jar。 但是在maven存储库中,工件安装为版本“3.1”而不是(我预期的)“3.1.1234”。 那里的编号仍然没有…

要使用正确的版本和内部版本号(“3.1.1234”)将工件安装到maven存储库中,您必须执行此操作(除了“Dave Jarvis”的答案):

  1. 添加主要/次要版本属性:
   1.0  
  1. 使用nashorn-maven-plugin为工件设置正确的版本号:
   io.github.michaldo nashorn-maven-plugin 0.0.1   validate  eval        

重建/安装项目后,工件将作为版本“3.1.1234”位于maven存储库中:-)

请注意:要增加主要版本或次要版本,您只能更改major.minor.version属性!