Gradle 无法通过企业代理连接到 maven repo - 需要通过 Sencha/Cordova 进行配置

Posted

技术标签:

【中文标题】Gradle 无法通过企业代理连接到 maven repo - 需要通过 Sencha/Cordova 进行配置【英文标题】:Gradle can't connect to maven repo through corporate proxy - need to configure through Sencha/Cordova 【发布时间】:2015-07-24 23:47:19 【问题描述】:

我正在尝试使用 Cordova 为 android 构建 Sencha Touch 应用程序。但是,在 gradle 构建开始后,我在尝试连接到 maven 存储库时遇到连接错误:

[INF] [shellscript] Running: C:\xxx\gradlew cdvBuildDebug -b C:\xxx\application\cordova\platforms\android\build.gradle -Dorg.gradle.daemon=true
[INF] [shellscript]
[INF] [shellscript] FAILURE: Build failed with an exception.
[INF] [shellscript]
[INF] [shellscript] * What went wrong:
[INF] [shellscript] A problem occurred configuring root project '''android'''.
[INF] [shellscript] > Could not resolve all dependencies for configuration ''':classpath'''.
[INF] [shellscript]    > Could not resolve com.android.tools.build:gradle:1.0.0+.
[INF] [shellscript]      Required by:
[INF] [shellscript]          :android:unspecified
[INF] [shellscript]       > Failed to list versions for com.android.tools.build:gradle.
[INF] [shellscript]          > Unable to load Maven meta-data from https://repo1
.maven.org/maven2/com/android/tools/build/gradle/maven-metadata.xml.
[INF] [shellscript]             > Could not GET '''https://repo1.maven.org/maven
2/com/android/tools/build/gradle/maven-metadata.xml'''.
[INF] [shellscript]                > Connection to https://repo1.maven.org refused

我想这与我必须在办公室连接的公司代理有关 - 但是我不确定如何配置 Gradle 以通过此代理进行连接,因为它由 Cordova 执行,而 Cordova 本身也在执行通过 Sencha Cmd。

有没有办法用 Sencha 配置代理?

【问题讨论】:

【参考方案1】:

您需要将 Gradlew 配置为使用代理服务器。这是通过创建具有以下内容的 gradle.properties 文件来完成的:

systemProp.http.proxyHost=www.somehost.org
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=userid
systemProp.http.proxyPassword=password
systemProp.http.nonProxyHosts=*.nonproxyrepos.com|localhost  

systemProp.https.proxyHost=www.somehost.org
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=userid
systemProp.https.proxyPassword=password
systemProp.https.nonProxyHosts=*.nonproxyrepos.com|localhost

这是取自Chapter 19.3 of the User Guide 的示例。确保在文件中同时包含 HTTP 和 HTTPS 值。

您将把这个 gradle.properties 文件放在以下任一位置:

    在移动项目的“cordova/platform/android”文件夹中

    在您的 Gradle 主文件夹中。对于 Windows,这可能是 %USERPROFILE%\.gradle\(例如:C:\Users\username\.gradle\)。

我建议将它放在 Gradle home 中,这样其他项目就可以使用它,而您不必担心将它置于源代码控制之下。

您还可以在this post 中找到更多信息。

【讨论】:

在答案中包含一些代码(此处:示例)总是有帮助的。准备编辑您的答案以包含其中的一两个? 谢谢!我知道该文件,但认为它是由 Cordova 生成的,并且会在每次构建时被覆盖.. @bardzusny - 感谢您的编辑。我明白你现在的意思了。 (这是我的第一个答案)。 另外,如果您需要完全取消设置这些设置(在非代理网络中),您必须像这样填写您的 gradle.properties:systemProp.http.proxyHost= systemProp.http.proxyPort = 我花了 30 分钟才弄明白 Gradle 不能从 HTTP_PROXY 环境变量中拉取那些吗?【参考方案2】:

我遇到了同样的错误,但这是在我安装了 git 之后,这反过来又改变了我的环境变量。我回到那里删除了添加的路径,它起作用了

【讨论】:

以上是关于Gradle 无法通过企业代理连接到 maven repo - 需要通过 Sencha/Cordova 进行配置的主要内容,如果未能解决你的问题,请参考以下文章

无法通过代理连接到 websocket

无法通过 perl 中的 socks 代理连接到主机

无法通过 SOCKS5 代理服务器连接到互联网

无法从 https 客户端通过 wss 连接到 emqx mqtt 代理

如果不在防火墙或代理之后,Composer 将无法通过 http 连接到 packagegist 的一些原因是啥?

无法连接到 Eclipse Luna Market