一、 中央仓库的jar包md5有问题
项目需要使用jline插件,项目从私库nexus下载该插件(私库nexus从中央仓库下载该插件),需要校验md5,但md5校验失败了。于是查看中央仓库的jline-0.9.94.jar.md5,发现文件内容为“46235c960277206f00fe24714437bc89 /home/maven/repository-staging/to-ibiblio/maven2/jline/jline/0.9.94/jline-0.9.94.jar”, 这是错误内容,不知道为啥多了/home/maven/repository-staging/这些路径。 正确内容应该是“46235c960277206f00fe24714437bc89 jline-0.9.94.jar”
错误的md5如下:
https://repo1.maven.org/maven2/jline/jline/0.9.94/
https://repo1.maven.org/maven2/jline/jline/0.9.94/jline-0.9.94.jar.md5
正确的md5如下:
二、解决
1、 方式1
不校验md5了。 但项目必须得校验,所以这个方式不适用。
2、方式2
私库neuxs从中央仓库下载插件后,私库重新计算并写入正确的md5。 我们项目使用的是nexus3版本,插件不是以文件格式存储的,暂时没找到如何修改md5,所以这个方式不适用。
附上网上找的链接,但我没测试,仅供参考。
https://gist.github.com/umut/1113459
#!/bin/bash
for f in $(find $1 -name '*.jar' -or -name '*.pom'); do
MD5=`md5sum $f | awk '{print $1}'`;
SHA1=`sha1sum $f | awk '{print $1}'`;
echo $MD5 > $f.md5
echo $SHA1 > $f.sha1
done
2、方式3,目前可行
步骤1:新建format是maven2的,版本策略是release,且仓库类型是hosted的第三方库, 例如thirdparty。
步骤2:自己从从中央仓库下载插件jline-0.9.94.sources.jar、jline-0.9.94.jar、jline-0.9.94.pom这3个。然后手动上传到thirdparty。
步骤3:修改优先级,这一步至关重要 。 修改thirdparty比中央库阿里库都优先级高, 这样才会优先下载thirdparty里面的jline插件,否则会依然下载中央库阿里库里面的jline插件。