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 进行配置的主要内容,如果未能解决你的问题,请参考以下文章
无法从 https 客户端通过 wss 连接到 emqx mqtt 代理