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文件中则生效了。
实际上,需要的配置就下面这几行:
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,执行命令还是会失败,提示找不到某个插件或者包,这种情况就是访问不了仓库导致失败。