Sco*_*rew 26 java versioning maven
我正在使用由abbuild表示的版本控制系统,其中a是整体版本(原型,alpha和beta版本为0,主要版本为1),b是里程碑版本(沿着代表原型的行, alpha,beta阶段)和build表示项目编译的次数.
目前,我在应用程序运行时设置了调试标志,从文本文件中读取应用程序,增加数字并保存到文本文件.
我正在寻找一种更"正确"的方法来使用Java和Netbeans来做到这一点.有没有什么方法可以将构建数量注入到构建过程的某个地方?最好将数字保存到项目附带的源文件中 - 而不是依赖附近文件的存在.
Dav*_*vis 20
有几个流行的Maven插件可以实现这一壮举:
Apache Maven项目的Maven Release Plugin 对于简单地更新版本号有点过分.因此,使用后一个插件创建版本号(以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>
Run Code Online (Sandbox Code Playgroud)
pom.xml在文件顶部附近的version元素中定义主要版本和次要版本.例如:<version>3.1</version>
Run Code Online (Sandbox Code Playgroud)
pom.xml文件.版本号应该增加.
该插件需要配置的源代码管理repository(<scm>)元素.如果您不关心存储库签入号码,请使用虚拟scm.这可以用于包括存储库中的修订号,这是读者的练习.
您可以借助 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}
Run Code Online (Sandbox Code Playgroud)
由于 sed,它适用于 3 位数字的版本,但也适用于 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}'
Run Code Online (Sandbox Code Playgroud)
现在我建议避免使用 Maven Release 插件,以及其他答案中提到的各种手工黑客。
任何导致源代码级别的文件更改的内容都会创建新的提交,因此不必要地污染您的版本历史记录。
唯一应该负责管理源代码版本号的是版本控制管理系统。换句话说,Git。
好消息是,有一些非常好的选项可用,这些工具可以让 git 标签控制版本编号,而不是相反。
针对您的情况,我推荐的是jgitver,它以插件的形式支持 Maven 和 Gradle 设置,并且非常可配置。
您需要做的就是将一些文件添加到项目的根目录中,对其进行配置,并将 pom.xml 中的版本号设置为 0。完成。请参阅此处的jgitver 用法。
| 归档时间: |
|
| 查看次数: |
24478 次 |
| 最近记录: |