记一次gradle项目build失败以及解决方案(典型)
我要编译一个项目PUTflap。clone 到本地,按照其readme文件进行build。然后gradle报错如下:
Could not determine the dependencies of task ‘:shadowJar’.
Could not resolve all dependencies for configuration ‘:runtimeClasspath’.
Could not find org.apache.batik:org.apache.batik.dom.svg:1.6.0-20081006.
Searched in the following locations:
- https://jcenter.bintray.com/org/apache/batik/org.apache.batik.dom.svg/1.6.0-20081006/org.apache.batik.dom.svg-1.6.0-20081006.pom
- https://jcenter.bintray.com/org/apache/batik/org.apache.batik.dom.svg/1.6.0-20081006/org.apache.batik.dom.svg-1.6.0-20081006.jar
- https://repo.maven.apache.org/maven2/org/apache/batik/org.apache.batik.dom.svg/1.6.0-20081006/org.apache.batik.dom.svg-1.6.0-20081006.pom
- https://repo.maven.apache.org/maven2/org/apache/batik/org.apache.batik.dom.svg/1.6.0-20081006/org.apache.batik.dom.svg-1.6.0-20081006.jar
- http://repository.openmindonline.it/org/apache/batik/org.apache.batik.dom.svg/1.6.0-20081006/org.apache.batik.dom.svg-1.6.0-20081006.pom
- http://repository.openmindonline.it/org/apache/batik/org.apache.batik.dom.svg/1.6.0-20081006/org.apache.batik.dom.svg-1.6.0-20081006.jar
Required by:
project :
- Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.- Get more help at https://help.gradle.org
BUILD FAILED in 1m 39s
从报错信息来看是找不到 org.apache.batik:org.apache.batik.dom.svg:1.6.0-20081006 这个jar包。首先我怀疑是仓库的问题,我给它换成了阿里云的仓库。但是还是报错,显示阿里云仓库也没有这个jar包。
那么我尝试打开 https://repo.maven.apache.org/maven2/org/apache/batik/org.apache.batik.dom.svg/ 这个网址,发现不存在。那么我往上级目录看看,即 https://repo.maven.apache.org/maven2/org/apache/batik/,竟然也不存在。但是 https://repo.maven.apache.org/maven2/org/apache/是存在的。也就是说 batik 这个项目没了。后来查看了其他仓库(比如阿里云镜像),也都没有这个项目了。
那么我再在 meavn repository 中查找这个包,是存在的。而且一共也就那么两个版本,下图的1.6.0就是最新版本了,虽然它是2009年的。
那么尝试一下下图的新版本的 org.apache.batik.dom.svg,然后就可以了。
总结:
gradle 在build的时候经常会出现依赖无法获取的情况,有可能是jcenter这种仓库被关闭的原因,还有就是这种老版本的jar包不存在的原因。解决办法就是用国内仓库替换,或者使用新的jar包(但是新的jar有可能在项目中不能用)。