org.gradle.api.resources.ResourceException: Could not get resource ‘https://xxx.xxx/xxx.pom

由于合作开发,合作方提供的库放在了自建的maven仓库中,为了安全需要通过专有网络进行连接。但在进行库更新过程中总是提示如下类似错误:

Caused by: org.gradle.api.resources.ResourceException: Could not get resource 'https://xx.xx.com/com/android/tools/xxx-1.1.0.pom'.

既然下载找不到,那是不是专有网络连接有问题?
于是直接在浏览器中访问上面的pom文件地址,发现是可以访问的。那么证明网络是没有问题的。
那么会不会是AS的没有使用专有网络呢?
于是进入到Preferences—>Appearance & Behavior —> System Settings —> HTTP Proxy页面,最下面有一个check connection,可以检查AS是否可以访问某个网址,于是在这里输入了上面的pom地址,提示连接成功,那么AS也是可以正确连接到这个库的。
那问题到底出在哪里?
我回想了一下,之前在更新某些库时,可能在AS中设置过代理服务。菜单路径如下:Preferences—>Appearance & Behavior —> System Settings —> HTTP Proxy,在这个路径中设置代理,具体方法就不讨论了。
现在选择的是No Proxy, 所以AS是没有使用代理,那么会不会是之前代理后,在某些配置文件中仍然留有这个配置?
既然是gradle resource找不到,那么就重点看一下gradle,
果然发现在gradle的安装目录中有个全局的gradle.properties中仍保留之前设置的代理。内容大概如下:

## For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Fri Oct 30 16:06:15 CST 2020
#systemProp.http.proxyHost=127.0.0.1
#systemProp.http.proxyPort=1089
#systemProp.https.proxyHost=127.0.0.1
#systemProp.https.proxyPort=1089

注释掉最后这几行,重新编译工程,私有库可以正常下载了。
那么到底什么时候怎么添加的这个配置呢?我又进行了一下验证,重新进行了代理设置。发现当AS设置代理后,如果进行gradle同步,会弹出如下对话框:
org.gradle.api.resources.ResourceException: Could not get resource ‘https://xxx.xxx/xxx.pom_第1张图片
点击yes后就会在gradle的安装目录中的gradle.properties中增加代理的设置,而且即使AS中取消了代理设置,这个地方的配置也不会跟随更新。
所以还是谨慎使用代理。

你可能感兴趣的:(Android)