You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Bamboo中获取Maven构件的时间戳与构建编号?

Maven+Bamboo构建SNAPSHOT构件命名解析与Bamboo变量获取方案

一、构件名称字段来源

  • 20231009.065059:由Maven生成的时间戳,格式为yyyyMMdd.HHmmss,是Maven部署SNAPSHOT版本时自动替换-SNAPSHOT的标识,用于区分不同时间的构建产物。
  • 2:同样是Maven生成的构建编号,同一天内多次部署SNAPSHOT时,该编号会递增,用来区分同日内的重复构建。

注:Bamboo仅作为执行Maven命令的流水线载体,这两个值的生成逻辑完全由Maven的maven-deploy-plugin控制。

二、Bamboo后续阶段获取这些值的方法

1. 解析Maven部署日志提取

Maven部署时会输出类似Uploaded to nexus: http://xxx/repo/my-project-2.3.0-20231009.065059-2.jar的日志,可通过Bamboo日志解析规则捕获文件名:

  • 进入对应Maven任务的配置页,找到「日志解析」选项
  • 添加正则规则:Uploaded to .*: .*/(my-project-\d+\.\d+\.\d+-\d+\.\d+-\d+\.jar)
  • 将匹配到的第1组内容保存为自定义变量(如${bamboo.custom.snapshotArtifactName})
  • 后续阶段用Shell脚本拆分变量:
ARTIFACT_NAME=${bamboo.custom.snapshotArtifactName}
TIMESTAMP=$(echo $ARTIFACT_NAME | cut -d'-' -f3)
BUILD_NUM=$(echo $ARTIFACT_NAME | cut -d'-' -f4 | sed 's/.jar//')

2. 预生成变量并输出到日志

在pom.xml中配置Maven插件,提前输出时间戳和构建编号,再由Bamboo捕获:

  • 在pom.xml的build节点添加插件:
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals><goal>exec</goal></goals>
            <configuration>
                <executable>bash</executable>
                <arguments>
                    <argument>-c</argument>
                    <argument>echo "SNAPSHOT_TIMESTAMP=$(date +%Y%m%d.%H%M%S)" && echo "SNAPSHOT_BUILD_NUM=${bamboo.buildNumber}"</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>
  • 在Bamboo的Maven任务中,添加命令行参数:clean deploy -Dbamboo.buildNumber=${bamboo.buildNumber}
  • 配置Bamboo日志解析规则,捕获SNAPSHOT_TIMESTAMP=xxx和SNAPSHOT_BUILD_NUM=xxx的行,保存为自定义变量,后续直接调用即可。

3. 调用Nexus API查询

若构件已推送至Nexus,可在Bamboo后续阶段通过Nexus REST API查询最新SNAPSHOT构件信息:

# 示例curl请求,需替换为你的Nexus地址、认证信息和仓库名
ARTIFACT_INFO=$(curl -u admin:admin123 http://your-nexus-url/service/rest/v1/search/assets?repository=snapshots&name=my-project&version=2.3.0-SNAPSHOT)
# 用jq解析返回的JSON获取文件名(需提前安装jq)
ARTIFACT_NAME=$(echo $ARTIFACT_INFO | jq -r '.items[0].name')
# 拆分出时间戳和构建编号
TIMESTAMP=$(echo $ARTIFACT_NAME | cut -d'-' -f3)
BUILD_NUM=$(echo $ARTIFACT_NAME | cut -d'-' -f4 | sed 's/.jar//')

内容的提问来源于stack exchange,提问作者Fcom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:15:33