[Maven/Jar/Zip/时间异常] Maven 3.10.0 构建的 JAR 包的修改时间显示为 1980年,而非实际的时间(但创建时间是准确的),如何解决?

Q: Maven 3.10.0 构建的 JAR 包的修改时间显示为 1980年,而非实际的时间(但创建时间是准确的),如何解决?

问题描述

  • 通过mvn -pl xxx-modules/xxx-metadata -am clean package -DskipTests "-Dproject.build.outputTimestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)" 构建的JAR包,查看了下:JAR包的修改时间不对劲,试了几次,始终是 1980年2月1日 08:00。

但创建时间是对头的。

image

原因分析

  • 根因是当前 Maven 安装 D:\Programs\Maven\apache-maven-3.10.0 自带的 super POM 默认固定了 project.build.outputTimestamp:
<!-- Fixed date for reproducible build -->
<project.build.outputTimestamp>1980-02-01T00:00:00Z</project.build.outputTimestamp>

该配置位于:

D:\Programs\Maven\apache-maven-3.10.0\lib\maven-model-builder-3.10.0.jar
  -> org/apache/maven/model/pom-4.0.0.xml

只要当前项目的 pom.xml 里没有显式覆盖 project.build.outputTimestamp,Maven 就会用这个固定值作为 jar 条目的时间戳。可以通过以下命令验证:

mvn help:evaluate -pl xxx-modules/xxx-metadata -Dexpression=project.build.outputTimestamp -DforceStdout

返回结果:

1980-02-01T00:00:00Z
  • 由于 ZIP 格式最早只能表示到 1980 年左右,1980-02-01T00:00:00Z 又按本机时区 Asia/Shanghai 显示,所以 Windows 里最终看到的是 1980/2/1 8:00:00。

以前的构建没这个问题,大概率是之前用的 Maven 版本/安装目录的 super POM 没有写这个默认值,而不是电脑时间有问题。

解决方法

方案1:在项目根 pom.xml 的 <properties> 中添加空值,取消 Maven 的默认固定时间 (亲测)

<properties>
  <project.build.outputTimestamp></project.build.outputTimestamp>
</properties>

这样 Maven 不再使用 super POM 里的 1980-02-01T00:00:00Z。如果环境变量 SOURCE_DATE_EPOCH 未设置,jar 会退回使用真实文件时间。

方案2:不改 pom,在 bash shell 的构建脚本中动态生成当前时间 (亲测)

mvn -pl xxx-modules/xxx-metadata -am clean package -DskipTests "-Dproject.build.outputTimestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)"

每次构建都会生成形如 2026-11-05T10:30:00Z 的时间,Windows 上显示为北京时间 2026-11-05 18:30:00。

方案3:如果想保留可复现构建,但不想用 1980,可以用 git 提交时间

未亲测

BUILD_TS="$(git -C /e/My-Vier-Workspace/repositories/xxx/vire-service-platform show -s --format=%cI HEAD)"
mvn -pl xxx-modules/xxx-metadata -am clean package -DskipTests \
  "-Dproject.build.outputTimestamp=${BUILD_TS}"

不建议直接修改 maven-model-builder-3.10.0.jar 里的 pom-4.0.0.xml,因为 Maven 升级、重装或换机器都会恢复原样,而且不同环境行为不一致。

Y 推荐文献

X 参考文献

posted @ 2026-11-05 12:54  千千寰宇  阅读(3)  评论(0)    收藏  举报