自动递增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
是自动递增的),如下所示:
- 打开项目的
pom.xml
文件。 - 在
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}
- 确保
pom.xml
在文件顶部附近的version元素中定义主要版本和次要版本。 例如:
3.1
- 保存
pom.xml
文件。 - 重建项目。
版本号应该增加。
该插件需要配置的源代码管理存储库(
)元素。 如果您不关心存储库签入号码,请使用虚拟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.0
- 使用
nashorn-maven-plugin
为工件设置正确的版本号:
io.github.michaldo nashorn-maven-plugin 0.0.1 validate eval
重建/安装项目后,工件将作为版本“3.1.1234”位于maven存储库中:-)
请注意:要增加主要版本或次要版本,您只能更改major.minor.version
属性!