我正在使用由abbuild代表的版本控制系统,其中a是整体版本(原型,alpha和beta版本为0,主要版本为1),b是里程碑版本(沿着表示原型,alpha,beta阶段)和build表示项目编译的次数。
目前,我已经从文本文件中读取应用程序,增加数字,并在设置调试标志的情况下运行应用程序时保存为文本文件。
我正在寻找一种更“正确”的方法来使用Java和Netbeans来做到这一点。有没有什么方法可以将构建数量注入到构建过程的某个地方?最好将数字保存到项目附带的源文件中 - 而不是依赖附近文件的存在。
答案 0 :(得分:19)
有几个流行的Maven插件可以实现这一壮举:
Apache Maven项目的Maven Release插件有点overkill,只是为了更新版本号。因此use the latter插件创建版本号(以MAJOR.MINOR.BUILD的形式;例如3.1.4
,其中4
自动递增),如下所示:
pom.xml
文件。build
部分(dependencies
部分之后)中加入插件: <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>
答案 1 :(得分:1)
您可以使用当前分支的git commit count作为内部版本号。使用此命令行获取提交计数:git rev-list HEAD --count
。
与构建工具集成将非常简单。如果您使用的是Gradle,则可以使用此插件:https://github.com/rockerhieu/Versionberg/
答案 2 :(得分:1)
如今,我建议您避免使用Maven Release插件,以及其他答案中提到的各种手工制作的技巧。
任何导致源代码级别的文件更改的东西都会创建新的提交,因此不必要地污染了您的版本历史记录。
唯一负责管理源代码的版本号的是版本控制管理系统。 换句话说,Git。
好消息是,有几个非常好的选项可供使用,这些工具会将git标记控制在版本编号中,而不是相反。
我为您推荐的是JGitver,它以插件的形式支持Maven和Gradle设置,并且非常可配置。
您需要做的就是将一些文件添加到项目的根目录,对其进行配置以使其具有品味,并将pom.xml中的版本号设置为0。完成。 在此处查看enter link description here。
答案 3 :(得分:0)
我遇到了一些问题,并使用了“戴夫·贾维斯”的答案。这会将正确的版本和内部版本号添加到本地生成的jar文件中,例如:myProject-3.1.1234.jar。但是在Maven资源库中,工件安装为版本“ 3.1”,而不是(我已经预期)版本“ 3.1.1234”。内部版本号ist仍然不存在...
要使用正确的版本和内部版本号(“ 3.1.1234”)将工件安装到Maven存储库中,您必须执行(除了“ Dave Jarvis”的回答):
<properties>
<!-- !!!!!!!!! SETTING HERE THE CORRECT MAJOR/MINOR VERSION NUMER !!!!!!!!!! -->
<major.minor.version>1.0</major.minor.version>
</properties>
nashorn-maven-plugin
为工件设置正确的版本号:<!-- set "major.minor.revision" version -->
<plugin>
<groupId>io.github.michaldo</groupId>
<artifactId>nashorn-maven-plugin</artifactId>
<version>0.0.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>eval</goal>
</goals>
<configuration>
<script>
$project.artifact.version = "${major.minor.version}.${buildNumber}";
</script>
</configuration>
</execution>
</executions>
</plugin>
重建/安装项目后,工件将以版本“ 3.1.1234”的形式出现在maven存储库中:-)
请注意:要增加主要版本或次要版本,您仅需更改major.minor.version
属性!
答案 4 :(得分:0)
借助maven插件和脚本,您无需更改pom就可以做到这一点。
例如,要自动增加没有快照作为前缀的版本的第二个数字(在您的情况下),在Linux系统上,您可以执行以下操作:
#get the current pom version and store it into a variable
version=$(mvn -q -U -Dexpression=project.version -DforceStdout maven-help-plugin:evaluate)
#increment the second digit of the version and overwrite the variable
version=$(echo ${version} | awk -F'.' '{print $1"."$2+1"."$3}' | sed s/[.]$//)
#update the pom with the new version
mvn -U versions:set -DnewVersion=${version}
它适用于3位数的版本,但由于sed,也适用于2位数的版本。
当然,请移动适合您要求的数字上的默认增量部分:"+1"
:
# increment the first digit
awk -F'.' '{print $1+1"."$2"."$3}'
# increment the second digit
awk -F'.' '{print $1"."$2+1"."$3}'
# increment the last digit
awk -F'.' '{print $1"."$2"."$3+1}'
答案 5 :(得分:0)
在需要增加构建的用例之前,通过 CI/CD 工具使用版本 Maven 插件!