Gradle 在离线环境下设置代理

Gradle 在离线环境下设置代理

 

背景

离线环境下,Gradle无法下载maven*库的包,只能通过代理下载。 设置代理的目的就是为了通过局域网内其他能联网的机器下载jar包。

 

假如是maven工程,可参考下面的配置:

找到maven解压目录下的setting.xml,将proxies属性下注释的内容复制出来,设置host和port属性即可:

<proxies> 
<proxy> 
<id>optional</id> 
<active>true</active> 
<protocol>http</protocol> 
<username></username> 
<password></password>
 <host>xxx.xx.xx.xx</host> 
<port>xxxx</port> 
<nonProxyHosts></nonProxyHosts>
 </proxy> 
</proxies>

 

 

假如是Gradle,如何配置代理?

可以对gradle全局设置变量,也可以针对单个项目进行配置。

 

只需要在.gradle目录下创建一个gradle.properties文件,文件中按照如下格式添加代理配置

systemProp.http.proxyHost=代理服务器主机名 

systemProp.http.proxyPort=8080 

systemProp.https.nonProxyHosts=10.*|localhost 

systemProp.https.proxyHost=代理服务器主机名 

systemProp.https.proxyPort=8080 

systemProp.https.nonProxyHosts=10.*|localhost

 

至于.gradle所在目录,用户home目录下有一个,配置全局生效,也可在工程下的.gradle目录中添加该配置文件,这样只对该工程生效。

 

但是我在实践的过程中,发现在项目下.gradle目录中添加的gradle.properties文件,并没有生效,放到全局配置gradle.properties文件中则生效了。

Gradle 在离线环境下设置代理

 

 

 

实际上,需要的配置就下面这几行:

systemProp.http.proxyHost=172.16.56.14 

systemProp.http.proxyPort=9001 

systemProp.https.proxyHost=172.16.56.14 

systemProp.https.proxyPort=9001

172.16.56.14是我的nginx服务器地址,9001是做正向代理的端口。有一点需注意,有些*仓库的地址是https地址,所以nginx必须支持正向代理https,默认情况下 nginx不支持代理https,需要额外安装一个ngx_http_proxy_connect_module模块。亲测成功!

 

成功之后:

在断网的机器上执行gradle命令,发现它能正常下载包,因为正向代理https成功了.假如搭建的代理服务器不能支持https,执行命令还是会失败,提示找不到某个插件或者包,这种情况就是访问不了仓库导致失败。

Gradle 在离线环境下设置代理

 

Gradle 在离线环境下设置代理

 

 

上一篇:解决Gradle Connect to 127.0.0.1:1080 [/127.0.0.1] failed: Connection refused: connect


下一篇:Android Studio设置gradle代理