Maven插件buildnumber-maven-plugin

该博客介绍了如何利用Maven的buildnumber-maven-plugin插件在构建项目时生成唯一的构建序列号,以实现如包命名或jar包内部版本标识的唯一性。通过配置插件参数,可以控制SCM版本号的长度和是否检查本地文件改动。在打包过程中,序列号会被插入到manifest文件中,确保每个构建产物都有独特的标识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接
这个插件的设计是为了当你每次构建项目时能够获得一个唯一的构建序列号(build number)。比如说,打包时,包名称以当前构建时间结尾,或者每次生成的jar包中包含唯一的序列号。

使用示例:
本示例中使用了此插件的create goal,也就是基于SCM(Source code management)的版本号来获取构建序列号(build number).

在项目的pom文件中添加如下

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>buildnumber-maven-plugin</artifactId>
	<version>1.4</version>
	<executions>
		<execution>
			<phase>validate</phase>
			<goals>
				<goal>create</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<shortRevisionLength>7</shortRevisionLength>
		<doCheck>false</doCheck>
		<doUpdate>false</doUpdate>
	</configuration>
</plugin>

解释:

  • executions部分表示在maven的validate阶段执行此插件的create goal。
  • shortRevisionLength部分用来指定获取SCM版本号的长度,比如git revision为b0c1c69be579175e63eeb1c056d607f01ab61e96,那么此示例中只获取后7位,也就是ab61e96。
  • doCheck设置为false表示不检查是否本地有文件被修改过。如果设置为true,一旦本地有文件被修改,那么构建就会失败。
  • doUpdate表示是否跟新本地的repository,false 表示不跟新。

在打包插件的配置如下,注意这里使用了${buildNumber}来使用生成的构建序列号。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<archive>
			<manifest>
				<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
			</manifest>
			<manifestEntries>
				<Implementation-Version>${project.version}-${buildNumber}-${maven.build.timestamp}</Implementation-Version>
			</manifestEntries>
		</archive>
	</configuration>
</plugin>

执行maven的打包命令mvn -DskipTests=true clean package.
此时我们可以看到此插件被执行

在这里插入图片描述

解压生成的jar包,打开 manifest (META-INF/MANIFEST.mf),我们可以发现${buildNumber}被替换成相应的构建序列号了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值