TeamCity 2022.04.4升级后,运行中构建getStartDateTime()返回NULL
解决方案
原因分析
TeamCity 2022.04.4版本的REST API在返回运行中构建的信息时,字段结构或序列化逻辑发生了细微调整,而你使用的1.14.0版本REST客户端(对应较早的TeamCity服务器版本)无法正确解析运行中构建的startDateTime字段,导致返回null;构建完成后字段格式与旧版本兼容,因此能正常获取值。
具体解决方法
方法1:升级REST客户端版本至与服务器匹配
将依赖的org.jetbrains.teamcity:teamcity-rest-client版本升级为2022.04.4,确保客户端与服务器版本完全对齐。新版本客户端会适配服务器API的字段返回逻辑,运行中构建的getStartDateTime()方法即可正常返回值。
修改Maven依赖配置示例:
<dependency> <groupId>org.jetbrains.teamcity</groupId> <artifactId>teamcity-rest-client</artifactId> <version>2022.04.4</version> </dependency>
方法2:直接调用REST API手动解析(临时方案)
如果暂时无法升级客户端,可绕过SDK直接发送HTTP请求获取构建数据,手动提取startDateTime字段:
- 发送GET请求到TeamCity REST API端点:
/app/rest/builds/id:{buildId}(替换{buildId}为目标构建ID) - 从返回的JSON/XML响应中提取
startDateTime字段值(格式示例:2024-05-20T14:30:00+02:00) - 将字符串转换为
ZonedDateTime对象:
String startDateTimeStr = "从API响应中获取的时间字符串"; ZonedDateTime startDateTime = ZonedDateTime.parse(startDateTimeStr);
内容的提问来源于stack exchange,提问作者Piotr Boho
相关产品推荐
相关产品推荐

