百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文
Maven 报出的 Checksum 校验失败警告,其根本原因及解决办法

Maven 报出的 Checksum 校验失败警告,其根本原因及解决办法

  • 网站名称:Maven 报出的 Checksum 校验失败警告,其根本原因及解决办法
  • 网站分类:技术文章
  • 收录时间:2025-08-16 14:14
  • 网站地址:

进入网站

“Maven 报出的 Checksum 校验失败警告,其根本原因及解决办法” 网站介绍


你私有仓库(如
http://111.229.204.1XX/repo/)上传的 jar/pom 文件没有附带 .sha1 或 .md5 文件,Maven 无法校验完整性,因此抛出 Checksum validation failed, no checksums available 警告。

是否影响构建?

不会导致构建失败,只是 Maven 的完整性校验机制无法验证该文件是否在传输过程中被篡改或损坏。但若长期忽略此类警告,可能带来安全隐患或不可预测的问题。

推荐解决方案

方案一:在私服开启 checksum 自动生成(最佳)

如果你使用的是:

o Nexus:上传 artifact 时默认会自动生成 .sha1、.md5,但如果你是用手动方式上传(如 curl、scp),可能没生成。解决办法:

# 手动生成 checksum(在 repo 文件夹下执行)

cd /data/repo/com/cjfintech/xxx/1.0.4

sha1sum cjfintech-common-core-1.0.4.jar > cjfintech-common-core-1.0.4.jar.sha1

md5sum cjfintech-common-core-1.0.4.jar > cjfintech-common-core-1.0.4.jar.md5

或:

o 确认 Nexus 中该 repository 的 Deployment Policy 设置为 Allow Redeploy,确保构件可替换上传。

o 建议使用 mvn deploy 上传构件,让 Maven 自动上传 checksum。

方案二:让 Maven 忽略 checksum 校验(开发环境可用,生产不推荐)

在你的 ~/.m2/settings.xml 中添加:

<settings>

<profiles>

<profile>

<id>skip-checksum</id>

<repositories>

<repository>

<id>platformbase</id>

<url>http://111.229.204.1xx/repo</url>

<releases>

<checksumPolicy>ignore</checksumPolicy>

</releases>

<snapshots>

<checksumPolicy>ignore</checksumPolicy>

</snapshots>

</repository>

</repositories>

</profile>

</profiles>

<activeProfiles>

<activeProfile>skip-checksum</activeProfile>

</activeProfiles>

</settings>

方案三:无视它(如果仅本地开发,构建正常)

你也可以暂时忽略这些警告,只要构建没有失败就可以继续。但建议定期维护你的私服,让构件都附带校验文件。

总结

场景 处理建议

你维护私服 推荐在上传时生成 .sha1 / .md5 文件

本地开发调试 可忽略或在 settings.xml 中关闭校验

构建产物发布生产 强烈建议校验 checksum,避免构件被篡改或损坏



Mac解决详细步骤

你可以使用 Mac 终端快速为本地已下载的 JAR/POM 文件生成缺失的校验文件(.sha1 和 .md5),以便私有 Maven 仓库能提供 checksum 校验。

步骤:为 JAR/POM 文件生成校验文件

假设以下文件已保存在你本地目录下(如
~/Downloads/maven-artifacts/):

o cjfintech-redis-spring-boot-starter-1.0.4.jar

o cjfintech-common-core-1.0.4.jar

o cjfintech-common-spring-boot-starter-1.0.4.jar

o cjfintech-commons-1.0.4.pom

在终端中进入该目录:

cd ~/Downloads/maven-artifacts/

然后运行以下命令批量生成校验文件:

for f in *.jar *.pom; do

sha1sum "$f" | awk '{print $1}' > "$f.sha1"

md5 -q "$f" > "$f.md5"

done

macOS 下 sha1sum 可能没有,可使用替代:

for f in *.jar *.pom; do

shasum "$f" | awk '{print $1}' > "$f.sha1"

md5 -q "$f" > "$f.md5"

done

文件结果示例:

你会看到目录下每个文件都生成了对应的 .sha1 和 .md5 文件,例如:

cjfintech-redis-spring-boot-starter-1.0.4.jar

cjfintech-redis-spring-boot-starter-1.0.4.jar.sha1

cjfintech-redis-spring-boot-starter-1.0.4.jar.md5

...

上传到私服(如 Nexus)

将以上 .jar/.pom/.sha1/.md5 文件一并上传至私有仓库对应目录,Maven 就不会再报 checksum 校验失败。