问题由来
今天早上来到工位,准备在公司Jenkins编译个apk送测,结果遇到了以下编译错误,试了好几个项目都是报类似的错误,只不过报错库不一样,都是Could not determine artifacts for xxx: Skipped due to earlier error
问题排查
- 百度了一下,网上说是代理啥的问题,一开始以为是Jenkins服务器的问题。顺手编译了其他几个项目,发现好几个都是类似的问题,也有几个是正常的。既然有项目是正常编译的,那么排除了是Jenkins服务器的问题。
- 编译日志提供的代理较少,无法确认,于是加上编译参数
./gradlew lib_share:assmableRelease --info增加调试信息。 - 在info日志里发现疑似问题。
提示mvn-release maven仓库Resource missing。通过浏览器访问mvn-release这个内网maven仓库发现其访问缓慢。
问题解决
- 去掉settings.gradle中的名为mvn-release的内网maven仓库,因为我们没有用上,只是历史原因复制了过来。
问题原因
gradle通过settings.gralde 中申明的maven仓库从上往下依次查找依赖。当遇到mvn-release的时候,因为这个仓库访问缓慢,因此一直卡在这里,最终导致超时,之所以有的项目可以编译通过,是因为该项目依赖较小,还没超出超时时间,因此能编译通过。
总结
因此,遇到Could not determine artifacts for xxx: Skipped due to earlier error这类的编译问题,基本就是某个maven仓库访问缓慢的原因,具体哪个仓库访问缓慢,需要逐个定位。