Could not determine artifacts for xxx: Skipped due to earlier error

304 阅读1分钟

问题由来

今天早上来到工位,准备在公司Jenkins编译个apk送测,结果遇到了以下编译错误,试了好几个项目都是报类似的错误,只不过报错库不一样,都是Could not determine artifacts for xxx: Skipped due to earlier error

image.png

问题排查

  1. 百度了一下,网上说是代理啥的问题,一开始以为是Jenkins服务器的问题。顺手编译了其他几个项目,发现好几个都是类似的问题,也有几个是正常的。既然有项目是正常编译的,那么排除了是Jenkins服务器的问题。
  2. 编译日志提供的代理较少,无法确认,于是加上编译参数./gradlew lib_share:assmableRelease --info增加调试信息。
  3. 在info日志里发现疑似问题。

image.png 提示mvn-release maven仓库Resource missing。通过浏览器访问mvn-release这个内网maven仓库发现其访问缓慢。

问题解决

  1. 去掉settings.gradle中的名为mvn-release的内网maven仓库,因为我们没有用上,只是历史原因复制了过来。

image.png

问题原因

gradle通过settings.gralde 中申明的maven仓库从上往下依次查找依赖。当遇到mvn-release的时候,因为这个仓库访问缓慢,因此一直卡在这里,最终导致超时,之所以有的项目可以编译通过,是因为该项目依赖较小,还没超出超时时间,因此能编译通过。

总结

因此,遇到Could not determine artifacts for xxx: Skipped due to earlier error这类的编译问题,基本就是某个maven仓库访问缓慢的原因,具体哪个仓库访问缓慢,需要逐个定位。